我有一個名爲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