【发布时间】:2023-03-15 09:26:01
【问题描述】:
以下两行是我的代码:
$rank_content = file_get_contents('https://www.championsofregnum.com/index.php?l=1&ref=gmg&sec=42&world=2');
$tmp_ = preg_replace("/.+width=.16.> /Uis", "", $rank_content, 1);
上面的第二行导致无限循环。 相反,以下替代方案确实有效:
$tmp_ = preg_replace("/.+width=.16.> /Ui", "", $rank_content, 1);
$tmp_ = preg_replace("/[^§]+width=.16.> /Uis", "", $rank_content, 1);
但遗憾的是,它们并没有给我想要的东西 - 两种选择都不包括 $rank_content 中的换行符。
另外,如果我将 file_get_contents 函数替换为类似
$rank_content = "asdfas\nasdfasdfaswidth=m16m> teststring";
也没有问题,虽然\n也代表换行,不是吗?!
那么我是否正确理解 RegEx 在注意到其中包含换行符的字符串时存在问题?
如何通过删除一些行直到出现"width="16" " 之类的内容来过滤$rank_content(其中包含多行)的子字符串? (可以在网站的源代码中看到)
【问题讨论】:
-
不,
\n仅表示双引号字符串中的换行符。 -
{1}在正则表达式中没用... -
谢谢,我编辑了这两期
-
再次编辑 - s 而不是 m
-
我在链接页面上没有看到任何与
width=.16.>匹配的内容。是不是搞错了?