Мне просто интересно, как применять несколько правил для preg_replace без их выполнения в первом прогоне. Его немного сложнее, позвольте мне объяснить на примере.PHP preg_replace несколько правил
Вход:
$string = 'The quick brown fox jumps over the lazy freaky dog';
Правила:
- Replace , я, о с у (если не в начале слова & если не befor е/после гласного)
- Заменить е, ˙U с я (если не в начале слова & если не до/после гласного)
- Заменить е с я (если не в начале слова)
- Заменить целые слова, т.е. собаки с кошки и лисом с ш олф (без применения вышеуказанных правил)
Выход: Thi быстро bruwn волк jimps над Тхи Luzy friky кошка
Я начал с чем-то вроде этого: (Отредактированные благодаря Ezequiel 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 в затруднительного
Есть ли способ чтобы избежать следующего правила (правил), если персонаж был уже было выполнено по предыдущему правилу?
Имеет ли это смысл?
Откуда взялся «freaky»? Пфф. Я хочу, чтобы регулярное выражение создавало правильную фразу: P – 2010-08-10 00:00:52