2015-07-10 4 views
0

Я пытаюсь выделить выделенное строковое содержимое с помощью функции preg_replace(). Строка $() была выделена полужирным шрифтом.

  <?php 
     $text=preg_replace("/$()/","<b>$()</b>","$(), you can"); 
      echo $text; 
      ?> 

Но как только я добавил слово в круглые скобки, функция перестала работать. Тем не менее, функция тоже не выдавала никакой ошибки.

  <?php 
     $text=preg_replace("/$(abc)/","<b>$(abc)</b>","$(abc), you can"); 
      echo $text; 
      ?> 

Не могли бы вы объяснить это? Заранее спасибо.

+3

Как это первый выход правильно в любом случае? Он не дает ничего близкого к тому, что вы описываете. – Anonymous

+1

проверить ваше регулярное выражение на http://www.regex101.com, серьезно, это того стоит. 'preg_replace' будет делать то, что вы говорите! – Martin

+0

@ Анонимный я не понимаю, что означает u ...... –

ответ

2

Первое регулярное выражение "worked", поскольку оно соответствует пустой строке в конце ввода и заменяется на <b>$()</b>.

enter image description here

Вам нужно экранировать специальные символы:

'/\$\(abc\)/' 

См IDEONE demo

$text=preg_replace("/\\$\\(abc\\)/","<b>$(abc)</b>","In place of $(abc), you can"); 

Выход: In place of <b>$(abc)</b>, you can

+0

thanks..thumbs up –

+0

можно получить более подробную информацию .. как первый код работал ....... (без выхода) –

+0

Я добавил объяснение. На самом деле '(' и ')' не были буквальными скобками, а только группой захвата. –

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