我在每个单词之间使用了|
,我试图用preg_match
来检测它是否包含目标单词。使用preg_match检查单词
我已经使用这个:
<?php
$c_words = 'od|lom|pod|dyk';
$my_word = 'od'; // only od not pod or other word
if (preg_match('/$my_word/', $c_words))
{
echo 'ok';
}
?>
但它不能正常工作。
请帮忙。
我在每个单词之间使用了|
,我试图用preg_match
来检测它是否包含目标单词。使用preg_match检查单词
我已经使用这个:
<?php
$c_words = 'od|lom|pod|dyk';
$my_word = 'od'; // only od not pod or other word
if (preg_match('/$my_word/', $c_words))
{
echo 'ok';
}
?>
但它不能正常工作。
请帮忙。
不需要正则表达式。功能explode($delimiter, $str);
和in_array($needle, $haystack);
将为您做所有事情。
// splits words into an array
$array = explode('|', $c_words);
// check if "$my_word" exists in the array.
if(in_array($my_word, $array)) {
// YEP
} else {
// NOPE
}
除此之外,正则表达式将匹配包含相同的序列太等字样。
preg_match('/my/', 'myword|anotherword'); // true
preg_match('/another/', 'myword|anotherword'); // true
这正是您在这种情况下不应该使用正则表达式的原因。
你不能一个变量传递到单引号的字符串,你需要为使用
preg_match("/$my_word/", $c_words);
还是 - 我发现吸尘器:
preg_match('/' .$my_word. '/', $c_words);
但对于这样简单的事情因为我甚至不知道我是否使用正则表达式,所以一个简单的if (strpos($c_words, $my_word) !== 0)
就足够了。
'strpos('od','lom | pod')'会匹配,所以这不是一个选项。你的正则表达式也一样。 – 2013-04-11 12:29:02
另一方面,我们不知道$ c_words是什么?这是否意味着'$ all_words'? – 2013-04-11 12:30:52
他可能是指'$ my_word'而不是 – 2013-04-11 12:33:05
您正在使用preg_match()
错误的方法。由于您使用|
作为分隔符,你可以试试这个:
if (preg_match('/'.$all_words.'/', $my_word, $c_words))
{
echo 'ok';
}
非常感谢:) – user2203703 2013-04-11 12:49:42
@ user2203703没问题! – 2013-04-11 12:51:25