如何将 url (http://\/\test) 解码为 php 中的 (http://test)?

how to decode url (http:/\/\test) into (http://test) in php?

我正在 HTML 中制作一个表单,在这个表单中,有一些输入文本,如 URL、参数、单选按钮和单选按钮内部也有相同的输入,如 URL 和参数。提交表单后,我希望将这些数据保存为.txt文件格式,但我发现一个问题,即URL保存在这个文件中是http:/\/\test但是如果我显示提交的数据是[=15] =] URL 显示在 http://test

我尝试使用 urldecode($data) 但结果还是一样

if (isset($_POST['submit'])) {
    $nameURL = $_POST['nameURL'];
    $param = $_POST['param'];

    if($_POST['radiobutton']=='asynchronous'){
        $asyncURL = $_POST['asyncURL'];
        $asyncParam = $_POST['asyncParam'];

        $data = array(
            "Callback" => urldecode($nameURL),
            "Param" => $param,
            "asynchronous" => array(
                "Callback" => $asyncURL = urldecode($asyncURL),
                "Param" => array(
                            $asyncParam
                           )
            )
        );
    }else if($_POST['radiobutton']=='synchronous'){
        $syncURL = $_POST['syncURL'];
        $syncParam = $_POST['syncParam'];

        $data = array(
            "Callback" => urldecode($nameURL),
            "Param" => $param,
            "synchronous" => array(
                "Callback" => urldecode($syncURL),
                "Param" => array(
                            $syncParam
                           )
            )
        );
    }

    $data = json_encode($data);

    $filename = date('YmdHis').".txt";
    if(!file_exists($filename)){
        $fh = fopen($filename, 'w') or die("Can't create file!");
    }
    $ret = file_put_contents($filename, $data, FILE_APPEND | LOCK_EX);
    if($ret == false){
        die('There was an error writing this file');
    }

和我的 HTML 表单

    <form id="myform">
        <div class="form-group">
            <input type="url" name="nameURL" id="nameURL" placeholder="URL">
            <input type="text" id="param" name="param[]" placeholder="Param">
            <input type="button" onclick="addRow()" value="Create Row"/>
        </div>
        <div class="form-group">
            <label><input type="radio" name="radiobutton" value="asynchronous" id="asynchronous">Asynchronous</label>
            <label><input type="radio" name="radiobutton" value="synchronous" id="synchronous">Synchronous</label>
            <div class="asynchronous">
                <div class="form-group">
                    <input type="text" name="asyncURL" id="asyncURL" placeholder="Callback URL">
                    <input type="text" id="asyncParam" name="asyncParam[]" placeholder="Param">
                    <input type="button" onclick="createRowAsyc()" value="Create Row" />
                </div>
            </div>
            <div class="synchronous">
                <div class="form-group">
                    <input type="text" id="syncParam" name="syncParam[]" placeholder="Param">
                    <input type="button" onclick="createRowSync()" value="Create Row" />
                </div>
            </div>
        </div>
        <button type="submit" name="submit" id="submit">Submit</button>
    </form>

我希望输出是 http://test 但保存在文件中的输出是 http:/\/\test

请帮我解决我的问题,或者有什么可以帮助的

您可以像这样将 JSON_UNESCAPED_SLASHES 常量添加到 json_encode()

 json_encode($data, JSON_UNESCAPED_SLASHES);

其中,对于以下输入:

$data = json_encode([
    "url" => "http://example.com"
], JSON_UNESCAPED_SLASHES);

将输出:

{"url":"http://example.com"}

根据 documentation,这不会转义斜杠:

JSON_UNESCAPED_SLASHES Don't escape /. Available as of PHP 5.4.0.

尝试使用 添加斜线($nameURL) 这将帮助您解决问题。