PHP DOMDocument / LIBXML取代("和')

时间:2018-06-15 22:36:49

标签: php domdocument libxml2

我试图操纵我的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 &#8211; Development &#8211; </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 &ndash; Development &ndash; </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">

主要我的问题是他取代了一些&#39;使用&#34;,删除&#34; /&#34; ...

希望有人能帮助我。 :-)

2 个答案:

答案 0 :(得分:0)

如果您的应用程序在/>标记末尾没有<link时中断,则听起来它需要XHTML而不是HTML。 PHP文档中有一个comment,它通过使用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);

答案 1 :(得分:0)

不幸的是,我没有设法使用XHTML方法,尽管它给了我新的见解。

简而言之,也许是另一个问题,还有什么其他可能性?我想在已加载的网站中包含一个小的PHP Snipped。

我有一个WordPress插件,它应该根据特殊的CSS ID从textarea输出文本。

Javascript不是解决方案(但用于后备)。