PHP - preg множественный результат - PullRequest
0 голосов
/ 20 января 2012

У меня есть такой код:

<?
$source = '!Hello, this is !PHP!HTML !@language';
preg_match("'!(.*?)'si", $source, $match);
if($match) print_r($match);
?>

и я хочу получить результат как:

!Hello
!PHP
!HTML
!@language

Кто-нибудь может помочь?

Ответы [ 4 ]

4 голосов
/ 20 января 2012

Изменить на:

preg_match_all("/![a-z@]*/i", $source, $match);

Также см. этот пример .

0 голосов
/ 20 января 2012

Используйте это вместо preg_match

preg_match_all("/![@a-z]*/si", $source, $match);

preg_match возвращает только первое совпадение.

0 голосов
/ 20 января 2012
<?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";
    }   
?>
0 голосов
/ 20 января 2012
$source = '!Hello, this is !PHP!HTML !@language';
preg_match_all("~![^(!|\s|,)]*~si", $source, $match);
if($match) print_r($match);
...