Php 字符串比较算法

Php 字符串比较算法,php,algorithm,compare,Php,Algorithm,Compare,我试图编写一些php代码来检查一个名称是否包含在另一个(布尔方法)中 我目前正在使用strop来确定str1是否在str2中,但是我希望它更智能一些。i、 e.仅检查str1是否单独存在,而不是另一个无关名称/字符串的一部分 compareStrings(str1,str2) e、 g 如果有一个内置函数或正则表达式,我可以用它来实现上述功能,你有什么想法吗?谢谢。对于正则表达式,您可以使用\b来表示单词边界:\bGAP\b(我不太懂PHP,但我想您必须输入字符串文字作为“\\bGAP\\b”

我试图编写一些php代码来检查一个名称是否包含在另一个(布尔方法)中

我目前正在使用strop来确定str1是否在str2中,但是我希望它更智能一些。i、 e.仅检查str1是否单独存在,而不是另一个无关名称/字符串的一部分

compareStrings(str1,str2)
e、 g


如果有一个内置函数或正则表达式,我可以用它来实现上述功能,你有什么想法吗?谢谢。

对于正则表达式,您可以使用
\b
来表示单词边界:
\bGAP\b
(我不太懂PHP,但我想您必须输入字符串文字作为
“\\bGAP\\b”
)。

Aasmund完全正确。我想我应该详细介绍一下如何使用PHP实现它

使用: 和

使用preg_quote是很重要的,这样里面有规则的expression字符的单词就不会干扰测试了

包括您的示例测试

<?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]);
}

<?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]);
}