我怎么能用PHP拆分它?

时间:2013-12-20 15:10:08

标签: php json parsing split

我试图在PHP中拆分一些东西,我无法让它工作..现在已经尝试了一段时间,所以我想在这里问。

所以我可以说我的源代码中有多个<script> ... </script>,那么我可以做些什么来将它们分成一个字符串。我正在尝试爆炸,但没有按计划进行。

这是我到目前为止所尝试的:

$script = explode('<script>',$data,1); 
echo htmlspecialchars($script[1]);

尝试过,但没有得到任何具体的<script>

示例脚本:

<script>
script here...
</script>

<script>
second script here...
</script>

那么我将如何获得第二个脚本呢?

抱歉,我不是最好的正则表达式或用PHP解析,并祝大家圣诞快乐! :)

3 个答案:

答案 0 :(得分:3)

使用loadHTML()

$doc = new DOMDocument();

// load the HTML string we want to strip
$doc->loadHTML($html);

// get all the script tags
$script_tags = $doc->getElementsByTagName('script');

答案 1 :(得分:3)

不要使用字符串函数解析HTML。或者正则表达式,就此而言。 <center>无法保留正则表达式和HTML。但这是一个不同的故事。相反,使用html解析器,如Simple HTML DOM(由于某种原因,我的高中愚蠢的防火墙阻止了它)。如果我错了,请纠正我,因为我无法访问它的文档。

include("simple_html_dom.php");
$html=str_get_html($text);
$scripts=$html->find("script");
foreach($scripts as $script){
    echo(htmlspecialchars($script));
}

答案 2 :(得分:2)

我使用DOM解析器(如PHP的DOMDocument)来提取所需的数据,而不是字符串函数。这是你如何做到的:

$text = <<<TEXT
<script>
script here...
</script>

<script>
second script here...
</script>
TEXT;

$dom = new DOMDocument;
$dom->loadHTML($text);
echo $dom->getElementsByTagName('script')->item(1)->nodeValue;

一些解释:

使用loadHTML()方法加载文本,然后使用getElementsByTagName()方法获取所有脚本标记。现在,我们使用item(1)专门定位第二个<script>标记,然后回显该节点的nodeValue

输出:

second script here...
相关问题