как сделать поиск вхождения слова по шаблону ?

asker23

Новичок
пользователь указывает маску поиска текста в файлах, нужно открыть файлы и найти текст, все просто правда ? ;) те маску слова для поиска указывает пользователь с помощью регулярного выражения. У меня проблема в том что когда я указываю простую маску ''privet" поиск работает, а когда использую метасимволы, то уже нет.

Вот код:

PHP:
$search_text         = "privet";
  foreach ($files as $key=>$filename) {
    $content = file_get_contents($filename);    
    $pattern = "/" . $search_text . "/i";
    if(preg_match($pattern, $content)) {
      echo "<br>Text was found in file: ".$filename;
    }
  }
пытаюсь сделать вариант чтобы работали метасиволы * и ?

но код

PHP:
$search_text         = "priv?";
  foreach ($files as $key=>$filename) {
    $content = file_get_contents($filename);    
    $pattern = "/" . $search_text . "/i";
    if(preg_match($pattern, $content)) {
      echo "<br>Text was found in file: ".$filename;
    }
  }
не работает...WTF!
 

AmdY

Пью пиво
Команда форума
а что обозначает "?" в регулярном выражении и как им пользоваться?
кстати, есть замечательная линукс команда grep
 

asker23

Новичок
а что обозначает "?" в регулярном выражении и как им пользоваться?
кстати, есть замечательная линукс команда grep
за grep спасибо но это не в тему сейчас, похоже я неправильно составляю это регулярное выражение ? те наверно надо было

PHP:
$search_text         = "priv(?)";
так работает
но с множеством все равно проблемы, те хочу чтобы нашло привет, приветствую, приветики,

PHP:
$search_text         = "priv(*)";
выдает: Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 6 in D:\www\...\index.php on line 39

39 строка это
PHP:
if(preg_match($pattern, $content)) {
что ему сейчас не нравится ?
 

AmdY

Пью пиво
Команда форума
asker23
ну так прочитай раздел мануала про регулярные выражение, это 30 минут работы, а пользоваться полученным знанием будешь много лет. в данный момент ты абсолютно неверно употребляешь эти символы
 
Сверху