оберните <b>-tag вокруг первого слова строки с preg_replace</b>

Моя проблема в том, что это:

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$&</b>', $string);
amp;</b>', $string);

Не работает и я не знаю почему!

Это выводит:<b>$&</b> example если строкаan example, так что это неправильно. Так должно быть:<b>an</b> example

Я сгенерировал этот регулярный код сhttp://gskinner.com/RegExr/ где это работает.

Я знаю, что, очевидно,$& не делает правильную вещь. Но как я могу заставить это работать?

Можете ли вы дать мне совет?

Ответы на вопрос(3)

Решение Вопроса

Попробуйте с этим вместо

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$0</b>', $string);

$ 0 означает, что оно станет первым в вашем регулярном выражении, $ 1 - вторым и т. Д.

Вы также можете использовать обратные ссылки; \ 0 возвращает первое совпадение с того места, где вы находитесь, \ 1 возвращает второе сопоставление и т. Д.Больше информации

 John Doe Smith31 мая 2012 г., 14:36
Вот это да. это просто. очень полезно. благодарю вас!!

Вам нужно поставить номер после$ для ссылки на сгруппированную часть регулярного выражения. Здесь это будет первая группа, следовательно, 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

Ваш ответ на вопрос