我的项目中有错误的代码:
$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
提前感谢您的时间!
答案 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
包含与数组中某个值完全相同的字符串,则此功能将起作用。否则不是。