<?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
答案 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)
}