Кто-то был достаточно любезен, чтобы помочь мне с регулярным выражением для очень специфического использования, но моя единственная проблема сейчас заключается в том, что регулярное выражение заменяет только один экземпляр матча и не все Матчи (что является целью).
мне бы хотелось каждый экземпляр <SPAN>
с классом «стильная синяя кнопка», найденным здесь:
<span class="stylish-blue-button">
<span style="display:none;">[data-user="12345" data-userId="678910"]</span>
John Smith
<span style="display:none;">[/]</span>
</span>
...Blablabla some other text...
Чтобы стать этим:
[data-user="12345" data-userId="678910"]John Smith[/] ...Blablabla some other text...
Для этого мне был предоставлен этот preg_replace:
preg_replace('~\[(data-user="\d+")\h+(data-userId="\d+")\]\s*(.+?)\s*\[/\]\s*(.*)~s', '<span $1 $2>$3</span>$4', trim(strip_tags($string)));
Теперь это работает и это замечательно, но заменяет только один экземпляр.
Вопрос: Должен ли я радикально изменить / изменить свой подход, чтобы сделать это, или это будет небольшая модификация?
Большое спасибо.
$regex = '~\[(data-user="\d+")\s+(data-userId="\d+")\]\s*(.+?)\s*\[\/\]\s*(.*)~is';
while (preg_match($regex, $string)) {
$string = preg_replace($regex, "<span $1 $2>$3</span>$4", trim(strip_tags($string)));
}
echo $string;
Попробуй функцию preg_match_all (http://php.net/preg_match_all). Я надеюсь, что это так просто.