Str_Replace без вызова функции - PullRequest
0 голосов
/ 26 июня 2018


Как я могу использовать str_replace в PHP, не позволяя ему заменить символы, которые использовались в $ replace_with в следующем коде?

<?php
 $string='abcd';
 $replace= array('a','c');
 $replace_with = '[ac]';
 $string=str_replace($replace,$replace_with,$string);
 echo $string;
?>

Результат будет:
" [а [ас]] б [ас] d "
Как заставить мой скрипт заменить ' a ' в строке $ на ' [ac] ' только один раз, не позволяя ему заменить ' c ' внутри недавно вставленного ' [ac] '?

1 Ответ

0 голосов
/ 26 июня 2018

strtr() делает именно то, что вы просите:

$string = strtr( $string, array( 'a'=>'[ac]', 'c'=>'[ac]' ) );

Выход:

[ac]b[ac]d

Соответствующая выдержка:

Если дано два аргумента, вторым должен быть массив в форме array('from' => 'to', ...). Возвращаемым значением является строка, в которой все вхождения ключей массива были заменены соответствующими значениями. Самые длинные ключи будут опробованы первыми. После замены подстроки ее новое значение больше не будет искать.

...