2014-01-16 99 views
0

我想删除下列 - 标题= \ “huluId-581956 \” - 从一个字符串,以便:正则表达式工作不正常时投入的preg_replace

<a title=\"huluId-581956\" href="somelink">My Link</a> 

成为

<a href="somelink">My Link</a> 

我基本上希望将title属性取出。我巧妙我EXP上regexpal并把它变成了preg_replace这样:

$myString ='<a title=\"huluId-581956\" href="somelink">My Link</a>'; 

$myString = preg_replace('/(title=\\)("huluId-)[0-9]+\\(")/', '', $myString); 
$myString = preg_replace('/(title=\\)("huluId-)[0-9]+(\\")/', '', $myString); 

不过,虽然上regexpal我没有问题,选择标题属性,当我把表达成的preg_replace这是行不通的。

任何帮助将不胜感激,因为我不知道为什么会这样。

谢谢!

+0

好吧,你想从替换变量是'$ html',但你把'$ myString'内容。如果不是这样,可能太多'''。也许你可以使用XML解析器来提取属性,以防你的''在未来表现不佳? – bishop

+0

对不起,这是我缩短发布内容时犯的一个错误。我现在纠正了它。它显然应该是$ myString。至于XML解析能否请您进一步解释 - 我在该部门没有任何经验。谢谢 –

回答

2

只需用这个代替:也

$myString = preg_replace('/\s+title=\\\\"[^"]+"/', '', $html); 

,因为我不是你想利用这个什么情况下知道做什么,也许可以考虑使用DOM解析器,因为正则表达式是不是合适的工具HTML解析...像PHP Simple HTML DOM Parser DOM解析器能够做到这一点很容易...

Working DEMO

+0

你测试过了吗?似乎不适合我。 – mikevoermans

+0

@mikevoermans,更正后,您必须使用3个手指才能逃脱您获得我的投票的第4个xD – Enissay

+0

。这是很多斜杠... – mikevoermans

0

斜杠混乱了正则表达式 - 将它们去掉,它使生活更轻松。

$myString ='<a title=\"huluId-581956" href="somelink">My Link</a>'; 
$myString = stripslashes($myString); 
$myString = preg_replace('/title="huluId-[0-9]+" /', '', $myString); 
echo $myString; 
+0

嗨 - 这是一个更长的字符串的一部分,我不能乱它,当然除了删除title属性。是的,如果反斜杠不在那里,它会简单得多,但是正因如此,它们必须是。除非你知道只在该部分剥离反斜杠的方法 - 标题标签。 –

0

考虑到你将通常有“称号后”的斜线你可以有一个简单的正则表达式:

/title=\\"(.)*?"/ 

这后“标题= \选择一切“”,和‘’使其对下一个字符结束? ,这是一个引号。

代码:

$myString ='<a title=\"huluId-581956\" href="somelink">My Link</a>'; 

$myString = preg_replace('/title=\\"(.)*?"/', '', $myString);