0
我正在尝试解析一些HTML代码片段,并且因为各种原因想要对它们进行清理(XSS等)。将eregi_replace转换为preg_replace
我目前正试图删除任何标签上的所有属性,除了锚点上的href。我正在使用一系列eregi_replace调用来做到这一点,但我确信使用preg_replace和仅仅几行代码就可以做到这一点,但我一直无法使其工作。谁能帮忙?
当前代码:
$data_item = eregi_replace("<p[^>]*>","<p>", $data_item);
$data_item = eregi_replace("<h2[^>]*>","<h2>", $data_item);
$data_item = eregi_replace("<h3[^>]*>","<h3>", $data_item);
$data_item = eregi_replace("<h4[^>]*>","<h4>", $data_item);
$data_item = eregi_replace("<h5[^>]*>","<h5>", $data_item);
$data_item = eregi_replace("<h6[^>]*>","<h6>", $data_item);
$data_item = eregi_replace("<ul[^>]*>","<ul>", $data_item);
$data_item = eregi_replace("<ol[^>]*>","<ol>", $data_item);
$data_item = eregi_replace("<li[^>]*>","<li>", $data_item);
$data_item = preg_replace("/<a([^>]*)(href=\S+)([^>]*)>/i", '<a$2 rel="nofollow">', $data_item);
(I只需要解析HTML标签的子集,因为这我去掉任何undesireables之前)。