使用文本文件作为模式preg_match_all PHP

时间:2014-08-20 21:50:37

标签: php regex pattern-matching preg-match preg-match-all

error:preg_match_all(): Compilation failed: nothing to repeat at offset 59

大家好,我正在尝试为客户端制作一个单词过滤器,我遇到的问题是我的代码女巫从文本文件中拉出单词无法从我的文本文件中读取$字符,mycode在下面。

 $lines=array();
  $fp=fopen('/opt/lampp/htdocs/Comments/Classes/Bad.txt', 'r');
  while (!feof($fp))
  {
    $line=fgets($fp);
    //process line however you like
    $line=trim($line);
    //add to array
    $lines[] = preg_quote(trim($line));
  }
    fclose($fp);
    $string = Input::get('comments');
    $matches = array();
    $matchFound = preg_match_all(
      "/\b(" . implode("|", $lines) . ")\b/i", 
            $string, 
            $matches
          );
    if ($matchFound) {
      $this->addError("The following is not allowed please change it.");
      $words = array_unique($matches[0]);
      foreach($words as $word) {
        echo "<li>" . $word . "</li>";
      }
      echo "</ul>";
    }

2 个答案:

答案 0 :(得分:2)

在阅读文本文件时,在每一行上使用preg_quote

答案 1 :(得分:0)

您可能正在插入包含正则表达式元字符的文本,并以这样的方式插入它们,使它们实际上被视为元字符。您需要preg_quote()要插入的文字才能逃脱所有这些元素。