2010-07-09 64 views
1

删除标签我有这个网站的字符串:PHP - 从字符串

<div> 
    <span> 1 </span> 
    <a href="#"> <span> 2 </span> </a> 
    <a href="#"> <span> 3 </span> </a> 
    <a href="#"> <span> 4 </span> </a> 
    .... 
</div> 

如何从链接(<a>)内取出<span>标签?

回答

-2

它似乎是你试图从当前页面删除链接。如果是这样,你可能想看看这个教程。这可以通过3种方式完成。使用javascript,css或php和css。如果是这样,你可能想看看他的tutorial

+0

指向教程的链接不是有用的答案。正确的答案是使用带有$ allowable_tags参数的strip_tags,如下面的@Peter Gluck所述。 – axlotl 2018-02-12 15:56:16

1
$string = str_replace("<span>", "", $string); 
$string = str_replace("</span>", "", $string); 
4

如果你只是想删除a标签内span标记,且格式为您发布正是那么下面符合这一规范。

$string = str_replace('<a href="#"> <span>', '<a href="#">', $string); 
$string = str_replace("</span> </a>", "</a>", $string); 

如果格式变化可言,你可能需要一个正则表达式或使用DomDocument解析HTML。

+0

你要一些报价单的问题。 StackOverflow不会让我编辑你的答案......一个人怎么做到这一点? – 2010-07-09 01:04:41

+0

@nute:我认为你必须有2000的声望才能编辑其他人的东西,除非这个东西是社区维基。 – icktoofay 2010-07-09 01:11:04

+0

@nute,谢谢。我只是复制和粘贴。必须爱语法高亮。 – 2010-07-09 01:18:58

10

你是否还想移除<span>标记的内容?如果是这样,请试试这个:

$string = preg_replace("/<span[^>]+\>/i", "", $string); 

否则,nute发布的str_replace方法将正常工作。

+0

没有,只是标签''和'',只有从内部链接永远 – Alex 2010-07-09 01:05:37

+2

介意的人..我设法解决这个使用正则表达式: '的preg_replace('@ \ ] *)> \ ] *)>(。*?)\ <\/span> @i',' $ 3',$ string)' – Alex 2010-07-09 01:35:52

4

strip_tags() function是为此而设计的,并允许您指定不应被剥夺的HTML标签:

$stripped = strip_tags($string, '<div><a>'); 

指定'<div><a>'作为第二个参数保留<div>和锚元素。

0

或者你可以使用这个:

$new_string = preg_replace('/(\<span\>|\<\/span\>)/', '', $string);