Intereting Posts
конвертировать mysql в mysqli Отправка изображения из программы C # на веб-страницу PHP для отображения Как я могу предотвратить загрузку страницы, если нет javascript, но с использованием php вместо <noscript>? regex – строка preg_replace Пользовательская конечная точка WooCommerce API v3 Как я могу проверить регулярное выражение? используя $ this или parent :: для вызова унаследованных методов? Несколько сайтов в одной базе данных MySQL Развертывание приложения Symfony2 с Capifony – загрузчик APC по-прежнему использует предыдущий выпуск как остановить данные, автоматически вставляемые в базу данных в php Как предоставить разрешение apache для записи в домашний каталог? PHP – выберите «да» или «нет», да заставляет новый ввод появляться Миграция Yii2 из Apache в Nginx – не удалось выполнить бэкэнд-приложение Ошибка Mysql datetime DEFAULT CURRENT_TIMESTAMP Как получить код встраивания Soundcloud по URL-адресу soundcloud.com

Преобразование результатов регулярного выражения в нижний регистр

Я использую php's preg_replace, чтобы преобразовать любые слова, которые имеют hashtags перед ним в ссылку.

Итак, что-то вроде #austin будет завернуто в <a href="/tag/austin">#austin</a>

Вот мое регулярное выражение.

preg_replace('/\B#(\w*[A-Za-z_]+\w*)/', '<a href="/tag/$1">$0</a>', $text);

Моя проблема в том, что есть ли какие-либо заглавные буквы, например «#Austin», ссылка будет отображаться как <a href="/tag/Austin">#Austin</a> , вместо этого я хочу, чтобы url был строчным, независимо от того, что , поэтому <a href="/tag/austin">#Austin</a> .

Как я могу изменить свой обычный экспресс, чтобы создать эти результаты?

Вот пример использования preg_replace_callback предложенный @faileN:

 <?php $string = '#Austin'; function hashtag_to_link($matches) { return '<a href="/tag/' . strtolower($matches[1]) . '">#' . $matches[1] . '</a>'; } echo preg_replace_callback('/\B#(\w*[a-z_]+\w*)/i', 'hashtag_to_link', $string); 

Вы можете добиться этого с помощью preg_replace_callback : http://de2.php.net/manual/en/function.preg-replace-callback.php

Попробуйте следующее: preg_replace ('/ \ B # (\ w * [A-Za-z _] + \ w *) /', '$ 0', strtolower ($ text)); Это заставит объект ($ text) быть в нижнем регистре до проверки регулярного выражения

Теоретически вы можете использовать e модификатор, который позволяет вам использовать функции PHP в заменяющей строке:

 preg_replace('/\B#(\w*[A-Za-z_]+\w*)/e', "'<a href=\"/tag/'.strtolower('$1').'\">$0</a>'", $text);