2015-04-02 2 views
-1

Я пытаюсь заменить слово или последовательность слов в строке с помощью preg_replace? Например:Как заменить определенную подстроку в строке с помощью PHP preg_replace

Изменить Это:

ABCExample to abcExample 
AnotherExample to anotherExample 
XyzAbcExample to xyzAbcExample 

Оставить как есть:

xyzExample to xyzExample 
new to new 
+3

* Я стараюсь * Где? Я не вижу попыток (а) – Rizier123

+0

, почему бы не использовать взрыв? – Priyank

+1

В чем вопрос? Эта функция хорошо документирована и содержит четкие примеры. Вы читали документацию, когда дела шли не так, как ожидалось, не так ли? http://php.net/manual/en/function.preg-replace.php – arkascha

ответ

1

Вы должны использовать preg_replace_callback функцию.

$str = <<<EOT 
ABCExample 
AnotherExample 
XyzAbcExample 
xyzExample 
new 
EOT; 
echo preg_replace_callback('~(?m)^[A-Za-z]*?(?=(?:[A-Z][a-z]+)+$)~', function ($m) 
     { 
      return strtolower($m[0]); 
     }, $str); 
1

Я думаю, что вы ищете str_ireplace.

Эта функция возвращает строку или массив со всеми вхождениями поиска в теме (без учета регистра) заменяются с учетом замены значение. Если вам не нужны фантастические правила замены, вы должны, как правило, использовать эту функцию вместо preg_replace() с помощью модификатора i.

Пример кода (и sample program):

$res1 = str_ireplace("abc", "xyz", "ABCExample to abcExample"); 
echo $res1; 

Выход: xyzExample to xyzExample

Смежные вопросы