在查询字符串中传递php变量

时间:2010-08-09 10:22:52

标签: php string url

我有许多具有不同查询字符串的网址,例如

 view.php?id=5
 view.php?id=6
 view.php?id=7

在另一个php页面上我使用如下的file_get_contents:

 $page = file_get_contents('view.php?id=5');
 $file = 'temp/form.html';
 file_put_contents($page, $file);

这当然只写第一个id'5',所以如何在这个页面上检索'id'变量并将其写在我的file_get_contents行中,这样我就不必在单独的行中写出所有的id

感谢 rifki

4 个答案:

答案 0 :(得分:2)

如果我理解正确,在你展示的情况下你可以使用for循环或类似的东西。但这只有在ID是数字并且彼此跟随时才有效。

示例:

for($i = 5; $i <=7; $i++) {
  $page = file_get_contents('view.php?id='.$i);
  $file = 'temp/form.html';
  file_put_contents($page, $file);
}

更新: 如果您的ID来自数据库,您可以选择所有ID并循环。 例如

$sql = 'SELECT id FROM tablename;';
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($res)) {
  $page = file_get_contents('view.php?id='.$row['id']);
  $file = 'temp/form.html';
  file_put_contents($page, $file);
}

答案 1 :(得分:2)

如果这些网址用于浏览某些网页,您可以使用$ _GET数组(Official PHP Manual for the $_GET method)。
它只是获取通过get方法传递的变量的值(即page.php?var1=1&var2=2),因此,如果您需要获取页面的id值,代码应该是这样的:

$id = $_GET['id'];
$request = 'view.php?id='.$id;
$page = file_get_contents($request);
$file = 'temp/form.html';
file_put_contents($page, $file);

第一行获取通过url传递的id,然后第二行创建请求字符串以传递给file_get_contents函数,然后另一行就像你的代码。
如果您从这些页面内部请求数据就是这种情况,例如,如果您知道所需的所有页面,那么您可以使用for子句来解决此问题。
其中一个解决方案可能是:

$first_page = 5;
$last_page = 7;    
for ($i = $first_page; $i <= $last_page; $i++) {
    $request = 'view.php?id='.$i;
    $page = file_get_contents($request);
    $file = 'temp/form.html';
    file_put_contents($page, $file);
}

有了这个,您只需设置要请求的第一页和最后一页,然后使用这些值循环浏览页面然后调用您的函数来执行您的...“东西”:D
这是一种很好的方法,因为您可以在运行时设置for语句的值,这样您就不必每次都更改该文件。
但是我认为使用与整数不同的标识可以更好,例如id=home,或类似的东西。

答案 2 :(得分:1)

如果你在查询字符串中得到id我的意思是url,你应该写这样的东西:

$page = file_get_contents('view.php?id='.$_GET['id']);
$file = 'temp/form_'.$_GET['id'].'.html';
file_put_contents($page, $file);

答案 3 :(得分:0)

要从查询字符串中检索变量,请使用

<强> $ _ GET [ '变量名']

默认情况下,每当您向服务器发出请求时,都会调用GET方法,除非您明确指定表单方法为POST。

// variable_name是查询字符串

中变量的名称