可能重复:
如何使用 PHP 解析和处理 HTML?
我需要解析 HTML 块,根据描述是否符合特定标准,用链接描述替换一些 href。
我用来识别特定字符串的正则表达式在我的应用程序的其他地方使用:
$regex = "/\b[FfGg][\.][\s][0-9]{1,4}\b/";
preg_match_all($regex, $html, $matches, PREG_SET_ORDER);
我使用以下 SO 问题作为提取 href 描述的起点:
这个想法是转换任何具有“FfGg.xxxx”类型标识符的链接,并保留其余部分(即,谷歌链接)。
到目前为止,我所拥有的是:
$html = 'Ten reports <a href="http://google.com">Google!</a> on 14 mice with ABCD
show that low plasma BCAA, particularly ABC and to a lesser extent DEF, can result in
severe but reversible epithelial damage to the skin, eye and gastrointestinal tract.
</li><li>Symptoms were reported in conjunction with low plasma ABC levels in 9 case
reports. In two case reports, ABC levels were between 1.9 and 48 µmol/L (<a
href="/docpage.php?obscure==100" target="F.100">F.100</a>, <a
href="/docpage.php?obscure==68" target="F.68">F.68</a>, <a href="/docpage.php?obscure==67"
target="F.67">F.67</a>, <a href="/docpage.php?obscure==71" target="F.71">F.71</a>, <a
href="/docpage.php?obscure==122" target="F.122">F.122</a>, <a
href="/docpage.php?obscure==92" target="F.92">F.92</a>, <a href="/docpage.php?obscure==96"
target="F.96">F.96</a>);';
这将转换所有链接,包括谷歌:
$html = preg_replace("/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/i", "$2", $html);
这将返回一个空白的 HTML 字符串:
$html = preg_replace("/<a.*?href=\"(.*?)\".*?>[FfGg][\.][\s][0-9]{1,4}<\/a>/i", "$2", $html);
我相信问题在于我如何在上面的第二个(非工作)示例中嵌入这个正则表达式:
[FfGg][\.][\s][0-9]{1,4}
在我上面的 preg_replace 示例中找到的 HTML 中嵌入 FfGg 表达式的正确方法是什么?