PHP-preg_match()

PHP-preg_match(),php,preg-match,Php,Preg Match,如果字符串可以在/$reg/中匹配,则此代码将打印“Get match”。对于我来说,不仅可以匹配,而且可以显示来自该正则表达式的所有可能字符串。例如,我的正则表达式是“(a | b)*”,可能的字符串是aaaa、abbb、bbbbbb、bbbaa等。我想打印最大长度为5的所有字符串。 if(isset($_POST['calc'])){ $reg = $_POST['regex']; $str = $_POST['str']; if (preg_match("/$reg/", $str))

如果字符串可以在/$reg/中匹配,则此代码将打印“Get match”。对于我来说,不仅可以匹配,而且可以显示来自该正则表达式的所有可能字符串。例如,我的正则表达式是“(a | b)*”,可能的字符串是aaaa、abbb、bbbbbb、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";
}
}

?>
使用

这将查找最大长度为5的连续“a”或“b”字符的所有字符串

unset($matches);
if (preg_match_all("/$reg/", $str, $matches, PREG_PATTERN_ORDER)) 
{
    var_dump($matches[0]);
}

瞧。

谢谢,先生,我能问个问题吗?如果这找到了顺序“a”或“b”的所有字符串,那么参数($str)中仍然有一个字符串。我应该在那里放什么字符串?@John
$str
是搜索的主题
unset($matches);
if (preg_match_all("/$reg/", $str, $matches, PREG_PATTERN_ORDER)) 
{
    var_dump($matches[0]);
}