【问题标题】:PHP preg_match_all - what's wrong with this regex? [duplicate]PHP preg_match_all - 这个正则表达式有什么问题? [复制]
【发布时间】:2019-09-10 23:04:22
【问题描述】:

假设我在一个文本文件中有以下内容:

xxa name="round_xx
Number 1
xxcolspanxx
DOG

yya name="round_yy
Number 2
xxcolspanxx
DOG

zza name="round_zz
Number 3
xxcolspanxx
DOG

我想使用 PHP 的 preg_match_all() 函数来返回文本文件中以:

开头的所有序列

a name="round_

.. 之间有任何字符序列和换行符,然后以:

结尾

跨度

所以结果应该是这3个匹配:

a name="round_xx
Number 1
xxcolspan
a name="round_yy
Number 2
xxcolspan
a name="round_zz
Number 3
xxcolspan

这是我的代码,失败了。它将文本文件的内容读入 $page_contents,但 preg_match_all 产生的匹配完全不正确:

$page_contents = file_get_contents('./path/to/textfile.txt');
$matches1 = array();
preg_match_all('/a name="round_(.*)colspan/s', $page_contents, $matches1);

我使用的是 PHP 7.1.28,Windows 10。谢谢。

【问题讨论】:

    标签: php preg-match-all


    【解决方案1】:

    使正则表达式不贪婪:

    preg_match_all('/a name="round_(.*?)colspan/s', $page_contents, $matches1);
    //                              __^
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-08
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多