Моя проблема в том, что это:
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$&</b>', $string);
Не работает, и я не знаю, почему!
Он выводит: <b>$&</b> example
если строка является an example
. так что это неправильно. Это должно быть: <b>an</b> example
Я сгенерировал этот регулярный код с помощью http://gskinner.com/RegExr/, где он работает.
Я знаю, что, очевидно, $&
не делает правильной вещи. Но как я могу заставить его работать?
Не могли бы вы дать мне совет?
Попробуйте это вместо этого
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$0</b>', $string);
$ 0 означает, что это станет первым, что соответствует вашему регулярному выражению, $ 1 станет вторым и т. Д.
Вы также можете использовать обратные ссылки; \ 0 получает первое, что соответствует тому, где вы находитесь, \ 1 получает второе совпадение и т. Д. Дополнительная информация
Вам нужно поставить число после $
чтобы ссылаться на сгруппированную часть регулярного выражения. Это будет первая группа, следовательно 0. Рабочий пример здесь: http://codepad.org/4V7GWdja
<?php $string = "an example"; $string = preg_replace('/(?<=\>)\b(\w*)\b|^\w*\b/', '<b>$0</b>', $string); var_dump($string); ?>
$string = 'an example'; echo preg_replace('/^\b(.+?)\b/i', '<b>$1</b>', $string); // <b>an</b> example