查找数组值是否显示在字符串中。 (反向in_array的种类?)

时间:2011-12-03 01:09:23

标签: php mysql arrays strpos

在我正在处理的网站上有一个副标题,如果主标题中尚未显示该信息,则只应显示该标题。主标题是任意字符串,而子标题是以编程方式创建的。子标题是根据多维数组的内容生成的(其内容也用于页面的其他部分。)

我使用foreach的PHP示例深入了解数组(只知道它是如何工作的一半),然后尝试strpos以查看数组中的值是否在标题字符串。

不幸的是,它不起作用。我很有可能在我认为应该如何运作时犯了一个愚蠢的错误。或者,告诉站点隐藏子标题(“hider”)的变量由于数组中的其他值而不断重置为“no”。

foreach ($arr_info as $i1 => $n1) {    
    foreach ($n1 as $i2 => $n2) {     
        foreach ($n2 as $i3 => $n3) {
            $pos = strpos($headline, $n3);
            if ($pos === false) {
                $hider="no";
            } else {
                $hider="yes";
            }
        }
    }

有什么想法吗?非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

添加:

$hider="yes";
break;

希望有所帮助

答案 1 :(得分:0)

我认为更清晰的方法是从值中构造一个正则表达式,看它是否与你的字符串匹配:

$values = array();
array_walk_recursive($arr_info, function($k){$GLOBALS['values'][] = preg_quote($k);});
$hider = preg_match('/(' . implode($values, '|') . ')/', $headline) ? 'yes' : 'no';