我正在寻找一个正则表达式来匹配文本中所有这些替代字符串,例如:
Mist X&摇滚正卷
MistX& RocknRoll
Mist-X和Rock n Roll
Mist X Rock n Roll
MistX-RocknRoll
雾X - 摇滚
等...
我想忽略空格/特殊字符/个案,并获取音乐乐队的名称。 我在正则表达方面非常糟糕,我现在拥有的只有:
$string = "Mist X & Rock-n-Roll";
$valid = preg_match("/\b".$string."\b/i", $text);
只有当它完全相同时才匹配 我最后的想法是删除$ text和$ string中的所有空格/特殊字符,以匹配下一个正则表达式,但它可能会返回一个没有预期的结果。 (如上面这个例子)
$string = "Son-B";
$new_string = strtolower(str_replace('-', '', $string));
$text = "I like my son because he is smart";
$new_text = strtolower(str_replace(' ', '', $text));
preg_match("/".$new_string."/i", $new_text); // => true while I don't want to match !
有什么想法吗?非常感谢。
答案 0 :(得分:2)
答案 1 :(得分:-1)
尝试这样可以轻松开始比较:
$list = array(
"Mist X & Rock-n-Roll",
"MistX & RocknRoll",
"Mist-X and Rock n Roll",
"Mist X Rock n Roll",
"MistX-RocknRoll",
"mist X - rock n roll",
);
foreach ($list as $e) {
$e = strtolower($e);
echo preg_replace("![^a-z]!", "", $e);
echo "<br/>";
}
结果:
mistxrocknroll
mistxrocknroll
mistxandrocknroll
mistxrocknroll
mistxrocknroll
mistxrocknroll