У меня есть такой код:
<? $source = '!Hello, this is !PHP!HTML !@language'; preg_match("'!(.*?)'si", $source, $match); if($match) print_r($match); ?>
и я хочу получить результат как:
!Hello !PHP !HTML !@language
Кто-нибудь может помочь?
Изменить на:
preg_match_all("/![a-z@]*/i", $source, $match);
Также см. этот пример .
Используйте это вместо preg_match
preg_match
preg_match_all("/![@a-z]*/si", $source, $match);
preg_match возвращает только первое совпадение.
<?php $haystack = "!Hello, this is !PHP!HTML !@language"; $needle = "/!([^\s\!,])*/"; $matches; preg_match_all($needle,$haystack,$matches); foreach($matches[0] as $match) { echo $match . "\n"; } ?>
$source = '!Hello, this is !PHP!HTML !@language'; preg_match_all("~![^(!|\s|,)]*~si", $source, $match); if($match) print_r($match);