我想匹配(使用正则表达式)两个字符串,忽略一个字符串可能有也可能没有连字符和/或单引号字符的事实(实际上只是忽略两个字符串中的所有标点符号)。
问题是两个字符串都在PHP变量中,而不是我可以轻松完成的文字,但不是变量 - 任何想法都可以......这甚至是可能的。
例如像模式修饰符/ i指定不区分大小写的比较 - 是否有一个修饰符来表示忽略标点符号只是比较字母数字字符串?
答案 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
)。