基本的PHP迭代和爆炸?以及标题

时间:2014-04-30 01:33:04

标签: javascript php arrays explode

<?php
   include_once("database.php");
   Header("content-type: application/x-javascript");
    if(isset($_GET["files"])){
    $src = explode("+",$src);
     for($i = 0;$i<=count($src);$i++){
       echo "console.log('$src');";
       echo "console.log('$src[$i]');";
       $file = preg_replace('#[^a-z0-9]#','',$src[$i]);
       echo "console.log('You\'ve select $file');";   
      }
     exit();
    }else{
       echo "console.error('No Files were found. Please try again, make sure your request is correct')";
   }
?>

我正在尝试创建动态JavaScript文件,并且控制台正在运行,但$src的迭代无法正常工作。

EX:

$_GET["files"]  ===>  file1+file2+file3+file4

url looks like  myfile.php?files=file1+file2+file3+file4

所以基本上我想通过分离+我刚接触PHP的$_GET来将这些分成一个数组,我试图自己学习这个但是我没有明确的文件可以找到。

同时

我是否正确地执行了preg_replace?我想确保没有恶意注入

更新

 if(isset($_GET["files"])){
   $src = explode("+",$_GET["files"]);
   foreach($src as $files){
    $file = preg_replace('#[^a-z0-9]#','',$files);
    echo "console.log('$file');";
   }
  exit();
 }
//Direct Output:
==>You've Selected aweelemtawe

//Output should be:
==>You've Selected awc
==>You've Selected elemt
==>You've Selected awe

1 个答案:

答案 0 :(得分:3)

错误使用explode()

以下行包含explode()来电

$src = explode("+",$src);

在此阶段(使用您上面发布的代码示例)$ src将不包含任何要explode()编辑的数据。您希望使用$_GET['files']值作为参数

$src = explode("+", $_GET['files']);

有关其工作原理的详情,请参阅the php docs on explode

用于循环/迭代

对于循环,您可能还想更改循环以检查$i < count($src)。如果您有file1+file2+file3+file4,则数组将在索引0,1,2和3处有4个项目。您希望该语句读取$i < 4而不是$i <= 4

然而...... 正如@TML建议的那样,using foreach比直接迭代数组时更受欢迎。

foreach(explode('+', $_GET['files']) as $file) 
{ 
  // work with $file here (each one will be an element of the exploded array)
}

为简化示例,上述内容基本等同于

$src = explode('+', $_GET['files']);
foreach($src as $file) 
{ 
  // work with $file here (each one will be an element of the exploded array)
}