【发布时间】:2012-08-06 07:03:38
【问题描述】:
我正在使用以下代码从 html dom 字符串中去除 javascript 并将它们放入数组中以供以后使用。
什么可以替代好用。
我的问题: 我在文件中遇到了 unicode 的问题。解析带有 unicode 的文件时,会产生以下错误:
警告:DOMDocument::saveHTML() [domdocument.savehtml]: 输出 由于转换错误,转换失败,字节 0x97 0xC3 0xA0 0xC2 in
我的代码:
function loadJSCodeToLast( $strDOM ){
//Find all the <script></script> code and add to $objApp
global $objApp;
$objDOM = new DOMDocument();
//$x = new DOMImplementation();
//$doc = $x->createDocument(NULL,"rootElementName");
//$strDOM = '<kool>'.$strDOM.'</kool>';
$objDOM->preserveWhiteSpace = false;
//$objDOM->formatOutput = true;
@$objDOM->loadHtml( $strDOM );
$xpath = new DOMXPath($objDOM);
$objScripts = $xpath->query('//script');
$totCount = $objScripts->length;
if ($totCount > 0) {
//document contains script tags
foreach($objScripts as $entries){
$strSrc = $entries->getAttribute('src');
if( $strSrc !== ''){
$objApp->AddJSFile( $strSrc );
}else{
$objApp->AddJSScript( $entries->nodeValue );
}
$entries->parentNode->removeChild( $entries );
}
}
//return $objDOM->saveHTML();
//echo $GLOBALS['strTemplateDirAbs'];
return preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $objDOM->saveHTML()));
}
【问题讨论】:
-
具体是什么问题?此外,如果你有 PHP 5.3.6 或更高版本,你可以使用
$objDOM->saveHTML($objDOM->documentElement)而不是凌乱的剥离。 -
用更具体的定义更新了问题
标签: php javascript regex dom