我正在尝试在我的WordPress插件中操纵一些源代码,并且遇到了DOMDocument操纵一些字符串和字符的问题。主要我只想在特定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">
我的主要问题是他用"替换了一些',删除了"/"......
希望有人能帮助我。
如果您的应用程序在<link
标记末尾没有/>
时中断,听起来它需要 XHTML 而不是 HTML。PHP 文档中有一条注释,展示了如何让DOMDocument
使用其saveXML()
方法来保存 XHTML。
$doc = new DOMDocument("1.0");
$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($doc->doctype);
$html .= "n";
$html .= $doc->saveXML($doc->documentElement);
不幸的是,我无法用XHTML方法做到这一点,尽管它给了我新的见解。
简而言之,也许还有另一个问题,还有什么其他可能性?我想在已经加载的网站中包含一个小的 PHP 截图。
我有一个WordPress插件,它应该根据特殊的CSS ID从文本区域输出文本。
Javascript不是一个解决方案(但用于回退(。