我正在开展一个项目,我遇到的问题是“跨度>”还在文本的开头打印我试图删除所有标签,除了上面提到的那个之外,每个东西都去了,
这是我的PHP代码
<p>
<?php
$desc = $top_news['headline_des'];
$aa = preg_replace( '/style=(["\'])[^\1]*?\1/i', '', $desc, 2 );
if(strlen($top_news['headline_des'])>100)
{
$description = substr($aa, 1 ,850)."...";
}else{
$description = $aa;
}
echo strip_tags($description);
?>
</p>
这是输出
span&gt; IPOR有国际共和党研究所(IRI)和美国国际代理机构....
答案 0 :(得分:1)
问题是substr($aa, 1 ,850)
电话。 substr
从位置0开始,而不是1,所以会发生这样的事情:
Input: <span>Foobar</span>
substr($input, 1, 850)
Output: span>Foobar</span>
substr
快乐地切断了第一个字符。因此,strip_tags
无法将span>
识别为整个标记,只是将其单独保留。
修复:使用substr($aa, 0, 850)
。
答案 1 :(得分:0)
$intro = ereg_replace("[</*>]", "", $intro);
答案 2 :(得分:0)
您可以使用strip_tags 来删除标记 p>
使用 preg_replace
$desc = $top_news['headline_des'];
$search = array(
'@<style[^>]*?>.*?</style>@siU',
'@<[\/\!]*?[^<>]*?>@si'
);
echo $pregReplacedContent = preg_replace($search, "", $aa);
答案 3 :(得分:0)
$text = preg_replace("/<.+?>/", "", $text);
这样的内容应该删除$text
变量中的任何标记。
如果它不起作用,您应该检查是否正确形成了要从中删除标记的初始文本。例如,span >
不会被删除,因为它不是标记,但<span >
将被删除而没有问题。