什么是加载剥离javascript并将其放入数组以供以后使用的替代方法
Posted
技术标签:
【中文标题】什么是加载剥离javascript并将其放入数组以供以后使用的替代方法【英文标题】:What can be alternate way to load strip out javascript and put it in array for later use 【发布时间】: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)
而不是凌乱的剥离。
用更具体的定义更新了问题
【参考方案1】:
在加载之前尝试使用utf8_encode()
转换您的字符串。
$txt = utf8_encode($txt);
var_dump(loadJSCodeToLast($txt));
XML 解析器将 XML 文档的文本转换为 UTF-8,甚至 如果您设置了 XML 的字符编码,例如作为 DOMDocument 构造函数的第二个参数。解析 XML 后 使用 load() 命令,它的所有文本都已转换为 UTF-8。
如果您在文本节点附加特殊字符(例如元音变音) 因此,您应该在您的 XML 文档中使用 utf8_encode() text 将其转换为 UTF-8,然后再将文本附加到 文档。否则,您将收到类似“输出 由于转换错误,转换失败”在 save()
来自DOMDocument::save documentation comments。
【讨论】:
以上是关于什么是加载剥离javascript并将其放入数组以供以后使用的替代方法的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试从 .csv 读取信息并将其放入 C# 中的数组中。谁能告诉我为啥代码不起作用?
使用 Afnetworking 获取 UIImageView 并将其放入数组中
使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中