В PHP я использовал функцию ereg (), чтобы определить, может ли указанная строка быть сгенерирована регулярным выражением ввода - PullRequest
0 голосов
/ 08 февраля 2012

В 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 ]

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

Функция ereg устарела с PHP 5.3.0, preg_match - лучший выбор, и если вам нужно получить все совпадения, используйте preg_match_all, в этих функциях используется perl-совместимый синтаксис регулярных выражений, поэтому вам нужно добавить некоторые изменения (добавить косая черта, ваше выражение эквивалентно '/ kkjjjj /' в регулярном выражении, совместимом с perl)

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

Я думаю, что единственный способ - это перебор. то есть. Сгенерируйте каждую строку и посмотрите, соответствует ли она.

Даже если вы ограничиваете пространство поиска короткими строками, это сложнее, чем кажется, поскольку регулярное выражение может охватывать все символы UTF-8, что значительно увеличивает количество перестановок по сравнению с «обычными» символами на клавиатуре.

Так что, на самом деле, Regex не совсем то, что можно изменить.

...