2012-12-06 58 views
2

我有文件,从我的其他网站获取内容。这是CLUDE很多:删除标签,但保持标签之间的字符串在php

<script> 
[random] string 1 
</script> 

<script> 
[random] string 2 
</script> 
.... 
<script> 
[random] string n 
</script> 

<script type="text/javascript"> 
must keeping script 
</script> 

<script type=text/javascript'> 
must keeping script 
</script> 

我想删除<script></script>但它们之间保证内容的“[随机]串......”使用PHP。

注意:str_replace可以删除它们,但可能会创建其他脚本<script type="text/javascript">must keeping</script><script type='text/javascript'>must keeping</script>。 将损失将近标签</script>必须保存脚本

感谢您的帮助

//解决了:

$content = preg_replace('/(<script>)(.*?)(<\/script>)/s', '$2', $content); 

无论如何,感谢帮助

回答

3

试试这个

$content = " 
    <script> 
    [random] string 1 
    </script> 

    <script> 
    [random] string 2 
    </script> 
    .... 
    <script> 
    [random] string n 
    </script>  
"; 

$content = str_replace(array("<script>", "</script>"), "", $content); 

编辑:既然你想摆脱<script></script>并在同一时间保持<script type="text/javascript"></script>因为使用 正则表达式来解决这类问题is a bad idea然后尝试使用这样的DOMDocument

$dom = new DOMDocument(); 

$content = " 
    <script> 
    [random] string 1 
    </script> 

    <script> 
    [random] string 2 
    </script> 
    .... 
    <script> 
    [random] string n 
    </script> 

    <script type='text/javascript'> 
    must keeping script 
    </script> 

    <script type='text/javascript'> 
    must keeping script 
    </script>  
"; 

$dom->loadHTML($content); 
$scripts = $dom->getElementsByTagName('script'); 

foreach ($scripts as $script) { 
    if (!$script->hasAttributes()) { 
     echo $script->nodeValue . "<br>"; 
    } 
} 

这将输出:

[随机]串1
[随机]串2
[随机]字符串n

+0

我只是编辑问题,str_replace可能会使hurst其他scrip –

+0

尝试DOMDocument类 – Amr

0

如果该文件是test.txt的,使用此代码

<?php 
$myFile = "test.txt"; 
$fh = fopen($myFile, 'r'); 
$theData = fread($fh, 5000); 
echo str_replace("</script>","",str_replace("<script>","",$theData)); 
fclose($fh); 
?> 
+0

谢谢,但丢失其他脚本我m请保留如:

相关问题