【发布时间】:2018-06-15 22:36:48
【问题描述】:
我正在尝试在我的 WordPress 插件中操作一些源代码,并遇到 DOMDocument 操作一些不需要的字符串和字符的问题。 Primary 我只想在特定的 id 上添加一些源代码。
这是源代码:
$doc = new \DOMDocument();
$doc->xmlStandalone = false;
$doc->encoding = 'UTF-8';
libxml_use_internal_errors( true );
$doc->loadHTML( $html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
// Add some HTML Divs and CSS classes
$html = $doc->saveHTML();
原始源代码(WordPress):
<title>WordPress – Development – </title>
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='dns-prefetch' href='//s.w.org' />
<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' />
<link rel='stylesheet' id='dashicons-css' href='http://localhost/WordPress/wp-includes/css/dashicons.min.css?ver=4.9.6' type='text/css' media='all' />
在 DOMDocument 例程之后:
<title>WordPress – Development – </title>
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//s.w.org">
<link href="https://fonts.gstatic.com" crossorigin rel="preconnect">
<link rel="stylesheet" id="dashicons-css" href="http://localhost/WordPress/wp-includes/css/dashicons.min.css?ver=4.9.6" type="text/css" media="all">
我的主要问题是他用“替换了一些',删除了“/”......
希望任何人都可以帮助我。 :-)
【问题讨论】:
-
这些变化是否破坏了任何东西?无论哪种方式,HTML 似乎都可以正常工作。
-
是的,这就是问题所在......不同的主题会引发错误,有时无法正确运行 JS 或解释内联代码错误原因(“/”)。
-
奇怪,输出是 HTML5 兼容的。它是否仅适用于非常旧的浏览器?它是否可能由于其他地方的一些不相关的 HTML 错误而中断,这是由此触发的?如果输出不完全像他们认为的那样,“不同的主题”是否会在输出上执行正则表达式?
-
DOMDocument 不保存源代码,它会将其解析为 DOM 结构。所以它不记得输入是使用单引号还是双引号,它们都产生相同的结构。稍后保存时,它会生成规范格式。
-
听起来您将输出发送到的应用程序需要 XHTML,而不是 HTML5。请参阅php.net/manual/en/domdocument.savexml.php#109416 以了解执行此操作的方法。
标签: php domdocument libxml2