PHP preg_replace текстовая переменная - PullRequest
2 голосов
/ 15 ноября 2009

Я хочу отобразить строку с переменной внутри, включая ($), вот так:

echo "$string";

Я не хочу, чтобы он выводил переменную для строки, я хочу, чтобы он отображал саму переменную $ string, а не содержимое переменной. Я знаю, что могу сделать это, добавив '\' перед ($), но я хочу использовать preg_replace для этого. Я попробовал это, и это не работает:

$new = preg_replace("/\$/","\\$",$text);

Ответы [ 4 ]

7 голосов
/ 15 ноября 2009

Используйте одинарные кавычки для объявления строки:

echo '$string';

Переменные внутри одинарных кавычек не раскрываются:

Примечание: В отличие от двух других синтаксисов, переменные и escape-последовательности для специальных символов будут не расширяться, когда они встречаются одинарные кавычки строки .

Другим решением было бы избежать $, как вы уже сделали в preg_replace вызове:

echo "\$string";
1 голос
/ 15 ноября 2009

Если я правильно понимаю ваш вопрос, вы не можете использовать preg_replace, чтобы делать то, что вы хотите. preg_replace получает свои аргументы после подстановки переменной.

То есть, либо preg_replace заменить нечего (поскольку замена уже произошла), либо preg_replace не нужно ничего делать (поскольку знак доллара уже экранирован).

0 голосов
/ 12 декабря 2013

Ну, я думаю, вы хотите удалить текст, который существует в некоторых переменных. Тогда вы можете сделать это как

 $foo = '123';  
 $bar = 'bqwe';                      
 $str= preg_replace("/".$foo ."/", '', $str, 1);
 $str= preg_replace("/".$bar ."/", '', $str, 1);
0 голосов
/ 15 ноября 2009

Как вы заметили, $ обрабатывается для интерполяции переменных внутри строк в двойных кавычках. Таким образом, ваш шаблон регулярного выражения должен быть построен с использованием одинарных строк в кавычках. Кроме того, $ является специальным символом внутри строки замены регулярного выражения, поэтому вам нужно его дополнительно экранировать:

preg_replace('/\$/', '\\\\$', $text)

Но здесь нет необходимости в функции preg_. str_replace должен это сделать:

str_replace('$', '\\$', $text)

Это может прояснить ситуацию для вас, но, как предлагает Гамбо: почему бы не использовать одинарные кавычки для эха?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...