【发布时间】:2012-07-28 11:56:15
【问题描述】:
这是我的字符串:
$str="<p>Some <a href="#">link</a> with <a href="http://whatever.html?bla">LINK2</a> and <a href="http://whatever.html?bla" target="_blank">LINK3</a> and</p> more html"
我想用php去掉链接LINK1和LINK2得到:
"<p>Some <a href="#">link</a> with and and</p> more html"
这是我认为接近我需要的:
$find = array("<a(.*)LINK1(.*)</a>", "<a(.*)LINK2(.*)</a>");
$replace = array("", "");
$result=preg_replace("$find","$replace",$str);
这不起作用。我已经搜索了几天并尝试了许多其他选项,但从未设法让它按预期工作。另外,我不介意 LINK1 和 2 是否会在删除 a 标签后立即出现。
【问题讨论】:
-
请不要使用 RegEx 解析 HTML,因为它会 drive you į̷̷͚̤̤̖̱̦͍͗̒̈̅̄̎n̨͖͓̹͍͎͔͈̝̲͐ͪ͛̃̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢。请改用HTML parser。
-
不要使用正则表达式解析 HTML。使用适当的 HTML 解析模块。 您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。请参阅htmlparsing.com/php 或this SO thread,了解如何使用已经编写、测试和调试过的 PHP 模块正确解析 HTML。
标签: php regex html-parsing