2009-11-14 4 views
2

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

echo "$string"; 

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

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

ответ

7

Использование single quotes для строки декларации:

echo '$string'; 

Переменные внутри одинарные кавычки не получают расширенной:

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

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

echo "\$string"; 
+0

haha ​​wow thanks – David

1

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

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

0

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

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

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

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

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

0

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

$foo = '123'; 
$bar = 'bqwe';      
$str= preg_replace("/".$foo ."/", '', $str, 1); 
$str= preg_replace("/".$bar ."/", '', $str, 1); 
Смежные вопросы