1

我发现语法 ofpreg_match()和 deprecatedereg()是不同的。
例如:

我以为

preg_match('/^<div>(.*)</div>$/', $content);

意思是一样的

ereg('^<div>(.*)</div>$', $content);

但是我错了。preg_match()不像 enter 那样包含特殊字符ereg()

所以我开始使用这种语法:

preg_match('/^<div>([^<]*)</div>$/', $content);

但这与我所需要的并不完全相同。

谁能建议我如何在不使用已弃用功能的情况下解决此问题?

4

1 回答 1

1

对于解析 HTML,我建议阅读这个问题并选择一个内置的 PHP 扩展。

如果出于某种原因您需要想要使用 RegEx 来执行此操作,您应该知道:

  • preg_match()是一个贪婪的小虫子,它会尝试吃掉你的任何东西 (.*),直到它生病(这意味着它达到了递归或回溯限制)。您可以使用U修饰符1更改它。

  • 引擎预计只输入一条线。您可以使用mors修饰符1更改它。

  • 使用你的 ' not a < character ' ([^<]*)hack 做得很好,因为它强制引擎在第一个<字符处停止,但只有<div>里面不包含其他标签时才会起作用!

ref: 1 PCRE 模式修饰符

于 2013-01-10T11:46:37.150 回答