2013-10-02 63 views
0

脚本:PHP脚本提供虚假结果

<?php 
    $dir = 'http://www.example.com/'; 
    $page = ' 
     <script src="folder/script.js" type="text/javascript"></script> 
     <script type="text/javascript" src="folder/script.js"></script>'; 
    $last = $data = $property = 0; 
    //search for all script tags 
    while (($last = stripos($page, '<script', $property))!==false) { 
     //find src property 
     $property = stripos($page, 'scr', $last); 
     if ($property===false && $property > $last+50) continue; 
     //find the start of the address 
     $data = stripos($page, '"', $property) + 1; 
     if ($data===false && $data > $prop+5) continue; 
     if (substr($page, $data, 4) !== 'http') { 
      $page = substr($page, 0, $data) . $dir . substr($page, $data); 
     } 
    } 
    echo $page; 
?> 

输出:

<script src="http://www.example.com/folder/script.js" type="text/javascript"></script> 
<script type="http://www.example.com/text/javascript" src="folder/script.js"></script> 

为什么插入src属性的$第一( “)后的目录,而不是之后的(”)?

+2

你在那里有一个错字,'scr',$ last);'..只要说' – Smuuf

+0

'$ last = $ data = $ property = 0;'<=你能做到吗? –

+0

@ Fred-ii-是的,为什么不呢?我建议你阅读手册... – OIS

回答

1

使用正则表达式:

$dir = 'http://www.example.com/'; 
$page = ' 
    <script src="folder/script.js" type="text/javascript"></script> 
    <script type="text/javascript" src="folder/script.js"></script>'; 
$regex = '#(<script .*src=")#'; 
$replace = '\1\2' . $dir; 
$page = preg_replace($regex, $replace, $page); 
echo htmlspecialchars($page); 

结果:** ** SCR,而不是** ** SRC在`$属性= stripos函数($页:

<script src="http://www.example.com/folder/script.js" type="text/javascript"></script> 
<script type="text/javascript" src="http://www.example.com/folder/script.js"></script>