我正在做以下事情:
<?
$text = preg_replace ("/<p>(.*?)<\/p>/", "$1<br>", "$text");
?>
所以我可以删除<p>
标签并在字符串的末尾放置一个空格(这是为了设置页面的样式)。
这完全适用于"<p>Something</p>"
。
但是,文字如:
<h3>Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC</h3>
<p>"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</p>
我从Lorem Ipsum(lipsum.com)页面获取,它不起作用,我不知道为什么。
在某种程度上相关的说明(我不确定它是否足以保持相同的问题,但它可以帮助解决这个问题),有没有任何功能或方法来自动删除这些标签的每个javascript片段可能有吗? e.g
<p onmouseover="alert('hello');">
感谢您的帮助。
答案 0 :(得分:1)
你去了:
$text = '<h3>Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC</h3><p class="toto">"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</p>';
$text = preg_replace('/<p\b[^>]*>(.*?)<\/p>/', "", $text)."<br>";
它还可以正确处理你的p可能具有的任何属性(就像我的例子中的类)。
答案 1 :(得分:1)
php文档中已经保存了一些函数
特别是这一个:http://php.net/manual/en/function.strip-tags.php#93567
<?php
function strip_only($str, $tags) {
if(!is_array($tags)) {
$tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags));
if(end($tags) == '') array_pop($tags);
}
foreach($tags as $tag) $str = preg_replace('#</?'.$tag.'[^>]*>#is', '', $str);
return $str;
}
$str = '<p style="text-align:center">Paragraph</p><strong>Bold</strong><br/><span style="color:red">Red</span><h1>Header</h1>';
echo strip_only($str, array('p', 'h1'));
echo strip_only($str, '<p><h1>');
?>
答案 2 :(得分:1)
试试这个php电话:
$text = preg_replace('~<p\b[^>]*>(.*?)</p>~smi', "$1<br>", $text);
它将处理忽略大小写匹配(p
和P
)以及多行匹配。