строка заменяет точное слово в php

1

PHP

$aaa="";
echo $nn="ab bc cd cde ab aa";
echo "<br>";
echo $n=preg_replace('/cd|ab/', '$aaa', $nn);
echo "<br>";
echo $no=preg_replace('/[a-z]/', '$bbb', $n);
echo "<br><br>";

Результат, который я ожидал, это "$ aaa $ bbb $ aaa $ bbb $ bbb $ bbb". То, что соответствует шаблону "cd" или "ab", должно быть изменено на "$ aaa", а те, которые не имеют равных "$ aaa", БББ".

  • 0
    Не связано, но все же: уберите echo из ваших заданий. Это только выводит 1 / истина.
  • 0
    cde должен быть '$ bbb', и я хочу, чтобы он точно совпадал с 'cd' или 'ab', а не cde
Показать ещё 1 комментарий
Теги:
string
preg-replace

1 ответ

1
Лучший ответ
$aaa="";
echo $nn="ab bc cd cde ab aa";
echo "<br>";
echo $n=preg_replace('/\b(cd|ab)\b/', '$aaa', $nn);
echo "<br>";
echo $no=preg_replace('/((?<= )[a-z]+)\b/', '$bbb', $n);
echo "<br><br>";

Первые замены совпадают внутри: cd или ab в границах слов (т.е. пробелы или начало/конец строки)

Второй заменит match (az) 1 или более раз, которому предшествует пробел (так как $ также является границей слова). Единственным недостатком является то, что это не будет соответствовать cde, если cde должен был стать началом строки.

  • 0
    почему (? <=) используется?
  • 0
    почему (? <=) используется?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню