Intereting Posts
Подготовить команды в интерактивном режиме CLI Поиск MySQL от нескольких пользователей, предоставленных где предложение – исправление и лучший алгоритм Не могу понять детей () в simpleXML html2canvas и jsPDF: отправить сгенерированный PDF-файл в виде вложения электронной почты file_get_contents, сбой HTTP-запроса PHP: Возможно ли правильно SUBSTR создать строку UTF-8? GET & Command – Неправильно как перенаправить в подпапку из корня, переписать ссылку подпапки, чтобы выглядеть как root, а затем добавить некоторые исключения в htaccess? Имена полей ввода формы, содержащие квадратные скобки, такие как поле Невозможность установить файлы cookie в PHP Неустранимая ошибка: вызов неопределенного метода mysqli_stmt :: query () Как проверить, вызван ли скрипт php другим скриптом на сервере? Ошибка сегментации PHPUnit 11 Зарегистрировать IP-адрес пользователя, дату и время Как реализовать маршрутизацию URL-адресов с помощью PHP + IIS?

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

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

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