Preg_replace в php для указанной конструкции

0

У меня проблема с моим preg_replace. Мне нужно сделать это для строки, которая содержит больше @.. @, например, у меня есть:

@CN@ This is a test. Big test @DATE@ and @DATE_END@.

Теперь я хочу получить список:

Мой код:

$pattern = '/@[_a-zA-Z0-9]*@/';
preg_match_all($pattern,'',$aData[$i]['tags']);
@CN@,@DATE@,@DATE_END@

Между @... @может быть несколько выражений.

  • 4
    Опубликуйте пример этих множественных выражений , а также опишите вашу попытку решения этой проблемы, даже если она не работает.
  • 0
    Я не понимаю Вы говорите о preg_replace() но в коде вы используете preg_match_all() . Не могли бы вы немного прояснить этот вопрос?
Теги:
preg-replace

2 ответа

1

Используйте preg_match_all с функцией implode.

$str = "@CN@ This is a test. Big test @DATE@ and @DATE_END@.";
preg_match_all('/@[^@]*@/', $str, $match);
echo implode(",", $match[0]);

Вышеупомянутая функция implode помогает объединить элементы массива с запятой в качестве разделителя.

Вывод:

@CN@,@DATE@,@DATE_END@
  • 0
    При необходимости используйте @\w*@ regex.
0

Я думаю, вы хотите использовать preg_match_all, а не:

preg_match_all('/(@[^@]+@)/', $input, $match)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню