搜索特定匹配的变量内容

时间:2013-12-07 11:07:03

标签: php variables foreach

我的项目中有错误的代码:

 $title = "In this title we have the word GUN"
 $needed_words = array('War', 'Gun', 'Shooting');
 foreach($needed_words as $needed_word) {
     if (preg_match("/\b$needed_word\b/", $title)) {
     $the_word = "ECHO THE WORD THATS FIND INSIDE TITLE";
     }
 }

我想检查$title是否包含15个预定义词之一, 例如,让我们说: 如果$title包含单词“战争,枪支,射击”,那么我想将找到的单词分配给$the_word

提前感谢您的时间!

2 个答案:

答案 0 :(得分:0)

最好的方法是使用正则表达式,因为它最灵活,并且允许您对要匹配的单词进行更多控制。要确保该字符串包含gun(还有guns),shoot(还有shooting)等字词,您可以执行以下操作:

$words = array(
    'war',
    'gun',
    'shoot'
);

$pattern = '/(' . implode(')|(', $words) . ')/i';

$if_included = (bool) preg_match($pattern, "Some text - here");
var_dump($if_included);

这比它应该更多匹配。例如,如果字符串包含true(因为它以warning开头),它也将返回war您可以通过向某些模式引入附加约束来改进这一点。例如:

$words = array(
    'war(?![a-z])', // now it will match "war", but not "warning"
    'gun',
    'shoot'
);

答案 1 :(得分:0)

试试这个

$makearray=array('war','gun','shooting');
$title='gun';
if(in_array($title,$makearray))
{
$if_included='the value you want to give';
echo $if_included;
}

注意: - 如果您的$title包含与数组中某个值完全相同的字符串,则此功能将起作用。否则不是