2013-01-24 39 views
0

我正在处理一个项目,并且我遇到了一个问题,即“span>”也在文本的开始处打印我试图删除所有标记,除了我提到的那些以外,以上,从文本中删除所有类型的标记

这里是我的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> IPOR具有国际共和研究所(IRI)和美国代办处为国际....

回答

0
$intro = ereg_replace("[</*>]", "", $intro);
+0

它不是更换整个标签,但ATLEAST删除 ... –

0

你可以使用strip_tags去除标签

随着的preg_replace

$desc = $top_news['headline_des']; 
$search = array(
'@<style[^>]*?>.*?</style>@siU', 
'@<[\/\!]*?[^<>]*?>@si'    
); 

echo $pregReplacedContent = preg_replace($search, "", $aa); 
+0

,但我已经在使用它 – user1885057

+0

他已经做了.. –

+0

@ user1885057可以粘贴在原来的$递减的内容有问题,以及(使用的preg_replace之前).. –

0
$text = preg_replace("/<.+?>/", "", $text); 

这样的事情应该删除任何标签的$text变量。

如果不起作用,您应该检查您想从中删除标签的初始文本是否正确形成。例如,一个span >不会被删除,因为它不是一个标签,但<span >将被删除没有问题。

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)