我有很多要导入的HTML数据,它们使用大写标记和属性名称。不幸的是,接收系统不允许这样做,坚持认为它们都是小写的。
如何安全地更改所有标签和属性名称?
我会跳转到正则表达式preg_replace_callback,但我知道在解析HTML时最终会变得非常棘手 - 重新发明轮子。
是否有DOMDocument或其他更安全的解决方案?
答案 0 :(得分:1)
正如@niet建议的那样,您可以尝试使用DOMDocument
然后保存并尝试输出它。
考虑这个例子:
<?php
$html_with_uppercase_tags = '<BODY><DIV class="container"><H1>Headers</H1><P>This is paragraph one</P></DIV></BODY>';
$dom = new DOMDocument();
$dom->loadHTML($html_with_uppercase_tags);
echo htmlentities($dom->saveHTML()); // check the tags
// http://www.php.net/manual/en/domdocument.savehtml.php
?>
应该产生类似的东西:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body><div class="container"><h1>Headers</h1><p>This is paragraph one</p></div></body></html>