我正在使用以下代码
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
function getURL($u){
$u = file_get_contents("http://{$u}");
return $u != false ? $u : "";
}
function GetStringBetween($string, $start, $finish){
$string = " ".$string;
$position = strpos($string, $start);
if ($position == 0) return "";
$position += strlen($start);
$length = strpos($string, $finish, $position) - $position;
return substr($string, $position, $length);
}
$url = (!isset($_GET["f"])) ? "deafult" : htmlspecialchars($_GET["f"]);
$stream = GetStringBetween(getURL("www.111.1212.1212.1212/blahblah.php?&a=abc&c=ttt&".$url),'file: "', '"');
?>
因此,当我执行myurl.com/file.php?f=blahblah
时,它会在该页面上的文件“和”之间进行抓取,但我的问题是其中包含更改的部分&示例dats = 8238&g = 238382&e = 78121
所以我会做myurl.com/file.php?f=blahblah.php?f=&dats=8238&g=238382&e=78121
然后从
www.111.1212.1212.1212/blahblah.php?&a=abc&c=ttt&dats=8238&g=238382&e=78121
问题是它没有添加&
部分,当我首先尝试对url进行编码时,它使它&
知道如何使它接受特殊字符吗?
也尝试更新
$url = (!isset($_GET["f"])) ? "deafult" : htmlspecialchars($_GET["f"]);
$url2 = (!isset($_GET["g"])) ? "deafult" : htmlspecialchars($_GET["g"]);
$url3 = (!isset($_GET["h"])) ? "deafult" : htmlspecialchars($_GET["h"]);
$url4 = (!isset($_GET["i"])) ? "deafult" : htmlspecialchars($_GET["i"]);
$stream = GetStringBetween(getURL("www.111.1212.1212.1212/blahblah.php?&a=abc&c=ttt&".$url "&".$url2 "&" .$url3 "&".$url4),'file: "', '"');
没有运气
答案 0 :(得分:0)
某些字符在HTML中具有特殊的意义,因此应 如果要保留其含义,则由HTML实体表示。 该函数返回经过这些转换的字符串。如果你 要求所有具有关联命名实体的输入子字符串 已翻译,请改用htmlentities()。
如果输入字符串传递给此函数和最终文档 共享相同的字符集,此功能足以准备 用于包含在大多数HTML文档上下文中的输入。但是,如果 输入可以表示未在最终代码中编码的字符 文档字符集,而您希望保留这些字符(如 数字或命名实体),此函数和htmlentities() (仅编码具有等效名称实体的子字符串)可能 不足。您可能必须使用mb_encode_numericentity() 代替。 参见:http://php.net/manual/en/function.htmlspecialchars.php