字符串比较算法

时间:2011-03-26 02:13:32

标签: php algorithm compare

我正在尝试编写一些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

任何想法,如果有内置功能或正则表达式我可以用来实现上述?感谢。

2 个答案:

答案 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"