PHP - preg_match () - PullRequest
       20

PHP - preg_match ()

1 голос
/ 09 февраля 2012

Этот код печатает «Got match», если строка может быть найдена в / $ reg /. Для меня возможно не просто сопоставить, а отобразить все возможные строки из этого регулярного выражения. Как, например, мое регулярное выражение "(a | b) *" возможные строки: aaaa, abbb, bbbb, bbbaa и т. Д. Я хочу напечатать все из них с максимальной длиной 5.

if(isset($_POST['calc'])){
$reg = $_POST['regex']; 
$str = $_POST['str'];

if (preg_match("/$reg/", $str)) 
{
    echo "Got match!";
}

else 
{
echo "String not valid";
}
}

?>

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012
unset($matches);
if (preg_match_all("/$reg/", $str, $matches, PREG_PATTERN_ORDER)) 
{
    var_dump($matches[0]);
}

См. документацию .

0 голосов
/ 09 февраля 2012

Использование preg_match_all()

if (preg_match_all('/\b[ab]{1,5}\b/', $str, $matches)) {
    echo implode(', ', $matches[0]);
}

Находит все строки последовательных символов "a" или "b", максимальная длина которых не превышает 5.

...