#php #regex
#php #регулярное выражение
Вопрос:
Я пытаюсь заменить дату внутри скобок некоторым текстом:
ADB (2010-11) (a)
—-> ADB : newtext (a)
$output = preg_replace_callback('#(([d{4}-d{2}][^)] ))#', function ($m) {
return " : ". newtext ." ";
}, $str);
Есть предложения?
Ответ №1:
Вам это не нужно preg_replace_callback
, preg_replace
вы можете достичь цели. Однако вам необходимо исправить ваше регулярное выражение. Все внутри []
должно быть списком символов, диапазонов, разделенных -
s (например a-z
, для символов ASCII между a
и z
(не в верхнем регистре)), или метасимволов (например d
, для чисел). Скобки известны как классы символов, подробнее о них можно прочитать здесь https://www.regular-expressions.info/charclass.html .
Для того, что вы хотите, вы можете использовать:
(d{4}-d{2})
и заменить на:
: newtext
Как строка PHP:
echo preg_replace('/(d{4}-d{2})/', ': newtext', 'ADB (2010-11) (a)');
- Демонстрация: https://3v4l.org/3YKWi
- Регулярное выражение101: https://regex101.com/r/zFwvHJ/1 /