2011-01-15 61 views
2

我想在PHP中删除整个html字符串的第一个元素(它总是一个段落)。PHP preg_replace删除字符串中的第一个HTML元素

我目前的方法是使用:

$passage = preg_replace('/.*?\b'.'</p>'.'\b/s', '', $passage, 1); 

这不</p>

因为特殊字符的工作,我知道,下面就从字“一”前的字符串中删除一切出现

$passage = preg_replace('/.*?\b'.'one'.'\b/s', '', $passage, 1); 

回答

6

你有一个反斜杠逃脱“/”,如果你使用它作为分隔符:所以这是<\/p>

编辑:您应该添加一个^来标记字符串的开始。

另一种解决方案:您可以使用其他分隔符,如#

的完整代码$passage = preg_replace('#^.*?</p>#is', '', $passage, 1);

+0

你提示如下:$通道=的preg_replace( '?/.* \ B' '<\/p>''\ B /。 s','',$ passage,1);这运行良好,但似乎没有以任何方式改变变量。 – user247298

+0

我仍然遇到同样的问题?这是我的确切代码:<? $ passage ='

这不应该显示

这应该显示

'; \t $ passage = preg_replace('/^.*?\ b'。'<\/p>'。'\ b/s','',$ passage,1); echo $ passage; ?> – user247298

+0

再次编辑:我会这样做。 – Floern

0

你可以使用这个正则表达式
$passage = preg_replace('/^<p>\s*(.+?)\s*</p>$/is','$1', $passage, 1);