1

我正在尝试编写将文件路径发送到服务器的代码,使用 php 将每一行解析为数组并将数组返回给客户端以对其进行处理。

当我运行我的程序时,它看起来不像是在处理 php 文件,因为我为测试目的而输入的 echo 从未被调用过。

我对 PHP 一无所知,因此非常感谢您的帮助!

查询:

$("#codelines").load('ParsePHPForDisplay.php?filename=DBManager.php');

    console.log($('#codelines'));
    pieces = $("#codelines").html().split("\n");

PHP:

<?php

class Parsing
{
    function ParseStuff()
    {
        echo('hi');
        $parsedFile = file($_REQUEST['filename']);
        echo($_REQUEST['filename']);
//        foreach ($parsedFile as $parsedFile_num => $parsedFile) {
//            echo"Line #<b>{$parsedFile_num}</b> : " .htmlspecialchars($parsedFile) . "<br/>\n";
//        }
        return $parsedFile;
    }
}

?>

我的一段 HTML:

<section id="codestuff">
    <h2>Code Lines</h2>
    <pre id="codelines">
    </pre>
</section>

编辑:

这是我现在的PHP:

<?php


        echo('hi');
        $parsedFile = file($_REQUEST['filename']);
        echo('test');
        echo($_REQUEST['filename']);
//        foreach ($parsedFile as $parsedFile_num => $parsedFile) {
//            echo"Line #<b>{$parsedFile_num}</b> : " .htmlspecialchars($parsedFile) . "<br/>\n";
//        }
        return $parsedFile;



?>

我收到此错误:

解析错误:语法错误,意外的 T_STRING,第5行ParsePHPForDisplay.php 中的预期为T_FUNCTION

4

2 回答 2

1

好吧,我相信你应该使用的 PHP,因为你在 Javascript 部分将文件拆分为一个数组,是:

<?php
  $file = file_get_contents($_REQUEST['filename']);
  echo $file;
?>

但在发布之前,您应该检查安全问题,例如用户从其他目录加载文件,在文件名中使用 ../,也不要获取 php 文件等。

于 2013-02-25T00:02:54.890 回答
0

我不明白你为什么需要 PHP 将文件解析为一个数组......只需让它将整个内容作为一个大字符串发送,然后你可以将它拆分为一个行数组,如果你需要的话,在 Javascript一旦你从服务器(例如myString.split(/\n\r|\n|\r))得到它。

然后,从 PHP 中,您可以执行以下操作:

readfile($_REQUEST['filename']); exit;

(请注意,这是不安全的;您应该在 PHP 代码中添加一些条件,以便它只能输出特定目录中的文件,例如。请参阅 PHP 的explode函数,该函数将帮助您将文件名拆分为一个数组,DIRECTORY_SEPARATOR用作分隔符)。

请注意,在 PHP 中,return语句不会导致输出任何内容。很多时候,你会通过一个 sa 值的函数获得你需要的值,return但你仍然需要它。echoprint

于 2013-02-24T23:53:17.107 回答