Preg_replace #hashtags - числовые значения, отличные от alpa

У меня проблема со следующим кодом:

    $input = '#2weeksago #1year&2weeksold #keyword';

    $output = preg_replace('/(?:.^|\s)#(\w+)/', ' <span class = "hashtag">#$1</span>', $input);

    print($output);

Я хочу, чтобы каждое слово в хэштеге было окружено атрибутом span. Это работает для большинства ключевых слов, но хэштеги с символом в нем не работают.

Выход

 <span class = "hashtag">#2weeksago</span> <span class = "hashtag">#1year</span>&2weeksold <span class = "hashtag">#keyword</span>

Может кто поможет расширить эту preg_replace?

Каков желаемый результат и как определить «слово» для начала?

CBroe 14.03.2018 15:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы не хотите разрывать «границы слова», но продолжаете сопоставление до следующего символа пробела, вам нужно сделать именно это:

<?php
$input = '#2weeksago #1year&2weeksold #keyword';
$output = preg_replace('/(?:.^|\s|^)#([^\s]+)/', ' <span class = "hashtag">#$1</span>', $input);
print($output);

Очевидно, что результат:

<span class = "hashtag">#2weeksago</span> <span class = "hashtag">#1year&2weeksold</span> <span class = "hashtag">#keyword</span>

Именно то, что мне нужно! Спасибо

SativaNL 14.03.2018 15:19

Другие вопросы по теме