放入Preg_Replace后,RegEx无法正常工作

时间:2014-01-16 03:07:12

标签: php regex

我想删除以下内容 - title = \“huluId-581956 \” - 从字符串中删除:

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

变为

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

我基本上想要取出title属性。我在regexpal上练习了我的exp并将其放入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上我选择title属性没有问题,当我将表达式放入preg_replace时它不起作用。

任何帮助都会非常感激,因为我不知道为什么会这样。

谢谢!

3 个答案:

答案 0 :(得分:2)

只需使用此代码:

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

另外,由于我不知道你在什么上下文中使用它,可能考虑使用DOM解析器,因为正则表达式不是HTML解析的合适工具...像PHP Simple HTML DOM Parser这样的DOM解析器可以做很容易......

Working DEMO

答案 1 :(得分:0)

斜线正在搞乱正则表达式 - 将它们剥离出来并使生活更轻松。

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

答案 2 :(得分:0)

考虑到你通常会在“标题”后面有斜杠,你可以使用更简单的正则表达式:

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

它选择'title = \“'之后的所有内容,而”?“使它在下一个字符上结束,这是一个引号。

代码:

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

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