У меня проблема с моим 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@
Между @... @может быть несколько выражений.
Используйте 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@
@\w*@
regex.
Я думаю, вы хотите использовать preg_match_all, а не:
preg_match_all('/(@[^@]+@)/', $input, $match)
preg_replace()
но в коде вы используетеpreg_match_all()
. Не могли бы вы немного прояснить этот вопрос?