在PHP中,我使用ereg()函数来确定指定的字符串是否可能由输入正则表达式生成

时间:2012-02-08 17:21:00

标签: php regex ereg

在PHP中,我使用ereg()函数来确定输入正则表达式是否可能生成指定的字符串。我想显示可能由给定的正则表达式生成的所有字符串。我怎么能这样做?

这是我当前的代码,如果它可以由正则表达式$ reg生成,则打印该字符串。我希望通过显示正则表达式可能生成的所有可能字符串来使其更复杂。

<?php
$reg = $_POST['regex']; 
if(isset($_POST['calc'])){
if (ereg ("$reg", "kkjjj", $st)) 
{   
for($i = 0; $i < count($st)-1; $i++)
    {
    echo "$st[$i]";
    }

} 

else 
{
  echo "String not valid";
}

}
?>

2 个答案:

答案 0 :(得分:1)

从PHP 5.3.0开始,不推荐使用ereg函数,preg_match是更好的选择,如果需要获取所有匹配项,请使用preg_match_all,此函数使用perl兼容的正则表达式语法,因此需要添加一些更改(添加至少斜线,你的表达式相当于perl兼容的regexp中的'/ kkjjjj /)

答案 1 :(得分:0)

我认为唯一的办法就是暴力破坏它。即。生成每个字符串并查看它是否匹配。

即使您将搜索空间限制为短字符串,这也比听起来更难,因为正则表达式可以包含所有UTF-8字符,这会比键盘上的“常用”字符显着增加排列数。

所以,不是真的,正则表达式并不是真正可以逆转的东西。