2011-04-03 52 views
1

此问题似乎很简单,但我不能在网络上跨越它为例来...PHP正则表达式:匹配不以HTML标签开头的行吗?

我试图创建的preg_replace这需要在一个时间线,并提出<p>标记左右,如果它不是已经开始一个HTML字符。

例如, 本款成为<p>this paragraph</p>

<code>this content</code>保持不变,没有<p>标签被周围放。

什么是最简单的方法来实现这一目标?

回答

3

你可以尝试的^线起始标记(?!..)negative assertion后:

$text = preg_replace('#^(?!<[a-z]).*$#m', '<p>$0</p>', $text); 

但是,它没有测试一个完整的标签。假设已经有<x的标签存在。

+0

有没有什么理由比'^([^ <]。]更喜欢'^(?!<[a-z])'? – Dancrumb 2011-04-03 19:22:35

+0

不,这对于这个简单的任务来说也是一个选项。断言检查两个主要字符,所以更具体一点。但这只是一种最好的猜测方法。 – mario 2011-04-03 19:39:30

+0

这就是我错过的一个词,“否定的断言”......我无法弄清楚如何说:匹配一条线_doesn't_以特定字符开头......感谢您的帮助 – jchmski 2011-04-05 16:27:26