我只是想知道如何應用preg_replace幾個規則而不執行它們在第一次運行。它有點複雜讓我根據一個例子來解釋。PHP preg_replace多個規則
輸入:
$string = 'The quick brown fox jumps over the lazy freaky dog';
規則:
- 更換一個,我,Ø與ü(如果不是在一個單詞的開頭如果不是,則爲& E /後元音)
- 更換ē,ü與我(如果不是在一個字&如果沒有開始前/後元音)
- 更換EA與我 (如果不是在一個單詞的開頭)
- 更換整個單詞,即狗與貓和狐狸與w^OLF(不應用上述規則)
輸出: 氏快速bruwn狼jimps超過THI luzy friky貓
我開始用類似的東西:(編輯感謝埃塞基耶爾Muns)
$patterns = array();
$replacements = array();
$patterns[] = "/(?<!\b|[aeiou])[aio](?![aeiou])/";
$replacements[] = "u";
$patterns[] = "/(?<!\b|[aeiou])[eu](?![aeiou])/";
$replacements[] = "i";
$patterns[] = '/ea/';
$replacements[1] = 'i';
$patterns[] = '/dog/';
$replacements[0] = 'cat';
echo preg_replace($patterns, $replacements, $string);
輸出:
Thi qiick briwn fix jimps ivir thi lizy friiky dig
編輯:
正如你所看到的問題是,每一個規則被通過之前的規則覆蓋。
例 '狐狸':
- 規則:原來狐狸到FUX
- 規則:原來FUX到修復
是否有辦法如果角色是,則避免以下規則已經受到以前規則的影響?
這有道理嗎?
'freaky'從哪裏來? Pfft。我想要一個正則表達式使它成爲正確的短語:P – 2010-08-10 00:00:52