От автора: регулярки! Раньше без них и так неплохо жилось! Не верите? Вот, например, PHP str replace регулярные выражения легко сделает! И я это сегодня докажу!
Строковые функции языка
В PHP существует множество функций для работы со строками, и многие из них могут стать полноценной заменой регулярным выражениям. Особенно, если нужно найти одно или два слова.
Сегодня мы вспомним о функции str_replace(). Она как раз занимается поиском и заменой. А если принять во внимание тот факт, что регулярным выражением можно считать не только шаблон с последовательностями и метасимволами, но и любое слово для поиска, то авторитет этой функции возрастет еще сильнее. Вот пример использования PHP str replace():
1 2 3 4 5 6 |
<?php $m = "Hello, hell,hellios!"; echo $m."<br />"; $stroka = str_replace("hell","men", $m); echo $stroka; ?> |
Но эта функция не предназначена для работы с настоящими шаблонами. Вот str replace PHP пример, доказывающий это:
1 2 3 4 5 6 |
<?php $m = "Hello, hell,hellios!"; echo $m."<br />"; $stroka = str_replace("[a-z,0-9]","men", $m); echo $stroka; ?> |
То есть функция возвращает строку без изменений. То же самое просматривается на примере использования PHP str replace с utf 8:
1 2 3 4 5 6 |
<?php $m = "Ветеринария лечит человечество, а медицина только человека!"; echo $m."<br />"; $stroka = str_replace("[a-z,0-9]","men", $m); echo $stroka; ?> |
Хотя вот так работает без проблем:
Кроме этого PHP str replace «понимает» array. С ее помощью можно найти и заменить массив символов. Например:
1 2 3 4 5 6 7 |
<?php $m = "Сколько стоит ваша шляпа, сэр? Много или нет?"; echo $m."<br />"; $array=array(",","?","сэр"); $stroka = str_replace($array," <b>замена</b>",$m); echo $stroka; ?> |
Другие варианты реализации
Функцию PHP str replace использовать без учета регистра не получится. Вместо этого нужно применять другой метод — str_ireplace(). Пример:
Здесь «сэра» не удалось заменить. Но вот так получится:
1 2 3 4 5 6 7 |
<?php $m = "Сколько стоит ваша шляпа, Men? Много или нет?"; echo $m."<br />"; $array=array(",","?","men"); $stroka = str_ireplace($array," <b>замена</b>",$m); echo $stroka; ?> |
Кроме этого существует еще одна версия данной функции для работы с многобайтными строками в PHP – mb strreplace. Но в такие дебри мы лазить не будем :).
Сегодня мы познакомились с одной из альтернатив регулярных выражений, которая работает быстрее и проще. А если PHP str replace не работает, то, скорее всего, все дело в неверной кодировке. В общем, копайте в данном направлении!
Комментарии (2)