我正在尝试编写一些PHP代码来检查名称是否包含在另一个(布尔方法)中。
我目前正在使用strpos来确定str1是否在str2中,但是我希望它更聪明一些。即仅检查str1本身是否存在而不是另一个不相关的名称/字符串的一部分。
compareStrings(str1,str2)
e.g。
GAP & THISISNOTAGAP //should return false
GAP & IN THE GAP //should return true
GAP & GAP //shop return true
ROSS & CROSSROADS //should return false
ROSS & ROSS - CHICAGO //should return true
任何想法,如果有内置功能或正则表达式我可以用来实现上述?感谢。
答案 0 :(得分:4)
Aasmund是完全正确的。我认为我应该扩展如何使用PHP。
使用:preg_match()
和preg_quote()
。
使用preg_quote非常重要,因此在其中包含常规探究字符的单词不会弄乱测试。
包含您的示例测试。
<?php
function wordInString($word, $string) {
return preg_match('/\b'.preg_quote($word, '/').'\b/', $string);
}
$tests = array(
array('GAP', 'THISISNOTAGAP', false),
array('GAP', 'IN THE GAP', true),
array('GAP', 'GAP', true),
array('ROSS', 'CROSSROADS', false),
array('ROSS', 'ROSS - CHICAGO', true),
);
foreach($tests as $test) {
assert(wordInString($test[0], $test[1]) == $test[2]);
}
答案 1 :(得分:3)
使用正则表达式,您可以使用\b
来表示单词边界:\bGAP\b
(我几乎不知道PHP,但我想您必须输入字符串文字为"\\bGAP\\b"
)