我有一个包含徽章对象的数组女巫。我正在尝试删除与搜索条件不匹配的对象,目前的条件是,如果名称与搜索的字符串不匹配
到目前为止,我掌握的代码是
foreach ( $badgeList as $key=>$badge ) {
$check = strpos($badge->getName() , $_POST['name']);
if($check === false) {
unset($badgeList[$key]);
print "<br/>" . $badge->getName() . " -- post: " . $_POST['name'];
}
}所发生的是它从数组中删除所有对象,甚至那些与字符串匹配的对象。
这是正在印刷的东西
户外挑战-张贴:户外 户外加挑战-张贴:户外 户外挑战-张贴:户外 户外挑战-张贴:户外 夜间1 第一年-岗位:户外 晚上5-邮电:室外
发布于 2015-10-01 13:31:31
如果需要更宽松的匹配,请使用不区分大小写的函数或regex:
stristr($badge->getName() , $_POST['name'])或
if( ! preg_match("/" . $_POST['name'] . "/i",$badge->getName()) ) {在这些建议中,stristr是不区分大小写的strstr版本,/i是regex的不区分大小写的标志。
发布于 2015-10-01 14:09:36
解决这一问题的一个办法如下:
$check = strpos(strtolower($badge->getName()) , strtolower($_POST['name']));strtolower()将把大海捞针和大写字符串转换为小写字符串,现在搜索"string“也将匹配"String”。
您最初的问题是strpos()进行区分大小写的搜索('S‘与’s‘不相同)
https://stackoverflow.com/questions/32888325
复制相似问题