2012-08-12 47 views
0

我想用preg_match获取<FONT COLOR="#0000ff">(insert some text here)<\/FONT>。与此类似的行重复并相互接触,所以如果我尝试一些类似<FONT COLOR="#0000ff">(?<NAME>+)<\/FONT>的通用类型,它会将它们全部作为一个单元格提取。所以我扔在[^<],使其停止在第一次比它遇到的,因此保持它包括HTML,因此是一个单元格...在PHP正则表达式中匹配不包含

但是,我正在提取的文本有时包含我想要的HTML。有没有办法使用[^]</F?我对负面展望的尝试并没有奏效,因为它“是的,最终肯定有一个关闭的字体标签,最好不要返回任何东西。”

回答

2

如果我正确理解你,你需要一个RegEx来执行非贪婪的匹配。例如,

如果查询字符串是:<x> abc </x> <x> def </x> <x> hig </x>

我们的正则表达式是:/<x>(.*)<\/x>/

然后执行一个贪婪的匹配,什么是返回是整个查询字符串,因为它满足了正则表达式。为了避免它,我们使用非贪婪的匹配。

新的正则表达式:/<x>(.*?)<\/x>/

它应该返回三个变量与preg_match_all()

+0

这是更简单的于预期,但正是我一直在寻找。谢谢。 – Rhyono 2012-08-12 04:19:44