我只是想知道如何应用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