我如何使用正则表达式比较PHP字符串变量

时间:2014-03-10 17:26:16

标签: php regex

我想匹配(使用正则表达式)两个字符串,忽略一个字符串可能有也可能没有连字符和/或单引号字符的事实(实际上只是忽略两个字符串中的所有标点符号)。

问题是两个字符串都在PHP变量中,而不是我可以轻松完成的文字,但不是变量 - 任何想法都可以......这甚至是可能的。

例如像模式修饰符/ i指定不区分大小写的比较 - 是否有一个修饰符来表示忽略标点符号只是比较字母数字字符串?

2 个答案:

答案 0 :(得分:1)

if (preg_replace("/['\-]/", '', $str1) == preg_replace("/['\-]/", '', $str2) {
   ...equal...
}

基本上:从两个字符串中删除'-,然后比较生成的剥离字符串。如果您不想使用大小写,请改为strtolower(preg_replace(....))

答案 1 :(得分:0)

我正在替换两个字符串中的所有非字母数字+空格(\s)字符。然后在正则表达式中使用一个字符串来匹配其他字符串。

$str1 = "alexander. was a hero!!";
$str2 = "alexander, was a hero?";
if(preg_match(
        "/^".preg_replace("/[^a-zA-Z0-9\s]/", "", $str1)."$/i", 
        preg_replace("/[^a-zA-Z0-9\s]/", "", $str2)
    )){
    print "matched!";
}

如果需要,您可以忽略上述正则表达式中的空格(\s)。