preg_match不适用于数据库中的数据

时间:2017-11-09 14:02:40

标签: php regex

我正试图在下面的文字中提到提到“gimlet”的段落。以下代码可以使用。

this works

我有一个数据库,其中$ result ['text']包含与截图中看到的文本完全相同的文本。

$stmt = $db->prepare("SELECT * FROM updates WHERE text LIKE '%gimlet%'");
$stmt->execute(array());
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $result) { 
  $re = '/[\*].*(gimlet)(.+?\n\n)/';
  $str = $result['text'];
  preg_match($re, $str, $matches);
  var_dump($matches);
}

......而这从未给出任何结果。任何东西。然而,$ result ['text']的内容如下所示:

database

我不明白为什么它会在给出文本时起作用,但如果它从数据库中抓取文本 - 这在我看来是相同的 - 它不起作用?我怎么搞砸了?这一定是显而易见的,但我无法理解我的生活。

1 个答案:

答案 0 :(得分:0)

我不明白为什么,但以下正则表达式在两个示例中都能完美运行。感谢@ctwheels谁给了我答案。

$re = '/\*.*(gimlet)(.+)/';