我想删除以下内容 - 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时它不起作用。
任何帮助都会非常感激,因为我不知道为什么会这样。
谢谢!
答案 0 :(得分:2)
只需使用此代码:
$myString = preg_replace('/\s+title=\\\\"[^"]+"/', '', $html);
另外,由于我不知道你在什么上下文中使用它,可能考虑使用DOM解析器,因为正则表达式不是HTML解析的合适工具...像PHP Simple HTML DOM Parser这样的DOM解析器可以做很容易......
答案 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);