2008-09-29 44 views
31

例如:<a><strike>example data in here</strike></a>正则表达式:抓住一切直到一个特定的词

我想一个标签内的一切,到最后

/<a>([^<]*)<\/a>/ 

当有在<a>标签内没有额外的标记它的工作原理,但如果有?

我想知道你是否可以告诉它抓住一切,直到[^</a>]而不是[^<]而已。

/<a>(.*)<\/a>/一起使用不能正常工作。有时候我会收到<a>标签中的所有内容,其他时候我会收到包含在该呼叫中的大量行。

回答

78
/<a>(.*?)<\/a>/ 

应该工作。这个?使其懒惰,所以它在匹配</a>部分之前尽可能少地抓取。但使用。将意味着它匹配一切,直到找到</a>。如果您希望能够跨线匹配,您可以使用以下如果与preg_match

/<a>(.*?)<\/a>/s 

的“S”结尾所说的“单线”模式,这意味着正则表达式。字符匹配包括新行在内的所有字符。请参阅other useful modifiers

+0

是的,这比我的回应要好得多。这工作。 – 2008-09-29 00:30:50

相关问题