-2

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";
}

}
?>
4

2 に答える 2

1

ereg 関数は PHP 5.3.0 で非推奨になりました。preg_match の方が適しています。すべての一致を取得する必要がある場合は、preg_match_all を使用します。この関数は perl 互換の正規表現構文を使用するため、いくつかの変更を加える必要があります (少なくともスラッシュを追加します)。 、あなたの式はPerl互換の正規表現の「/ kkjjjj /」と同等です)

于 2012-02-08T17:32:45.557 に答える
0

力ずくで攻撃するしか方法はないと思います。すなわち。すべての文字列を生成し、一致するかどうかを確認します。

検索スペースを短い文字列に制限したとしても、正規表現はすべての UTF-8 文字を含むことができるため、キーボード上の「通常の」文字よりも順列の数が大幅に増加するため、これは思ったよりも困難です。

したがって、そうではありませんが、正規表現は元に戻すことができるものではありません。

于 2012-02-08T17:28:42.360 に答える