我有一个名为accentToRegex的函数,它应该将重音和非重音字母替换为正则表达式。唯一的问题是,如果我想将“s”替换为“[sš]”和“š”替换为“[sš]”(同样的东西)。这个函数按字符运行char,并且当我输入“s”时,我最终得到了类似[s [sš]]的东西,但是我想改变它,所以它只返回“[sš]”。PHP生成正则表达式
我在考虑用修改过的值运行两次str_replace,但这似乎效率低下。
所以问题是如何改变从char运行char函数和检查已插入的字符忽略insterted字符。
例子。输入=“s” - >变成“[sš]” - >将“š”变成“[sš]”,所以我们得到[s [sš]]而不是“[sš]”。
function accentToRegex($pattern)
{
$replacements = Array("a" => "[aáàäâ]",
"e" => "[eéèëê]",
"s" => "[sš]",
"š" => "[sš]",
....
);
$flags = "iu";
$times = 0;
$final = str_replace(array_keys($replacements), $replacements, $pattern);
$regex = "/$final/$flags";
return $regex;
}
感谢您的时间和帮助,我很感激;)在strtr()功能评论发现
参见[strtr函数的效率()](http://www.php.net/manual/en/function.strtr.php)功能 - 评论部分中的一个例子几乎就是你要找的东西。 – SDC 2013-02-26 13:38:18
非常感谢 – Miso 2013-02-26 13:51:21