加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

当空格是发布数据php的最后一个字符时发出问题

发布时间:2020-12-13 15:56:54 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试允许我的流媒体应用的主持人使用contenteditable,jquery和php直接在观看页面中修改剧集的数据.一切都很完美,除非场地最后有空间; 正如我发现的那样,请求被正确发送.但是最后一个空格是在服务器端使用两个字符大小,而不是使用php trim()删除,所以它
我正在尝试允许我的流媒体应用的主持人使用contenteditable,jquery和php直接在观看页面中修改剧集的数据.一切都很完美,除非场地最后有空间;

正如我发现的那样,请求被正确发送.但是最后一个空格是在服务器端使用两个字符大小,而不是使用php trim()删除,所以它不再作为空格接收.我的所有数据,页面和服务器都编码为utf-8,因此它不是一个编码问题.

使用base64编码,我发现这个字符是“?”(包含空格).

我做错什么了吗?基本代码如下,您可以自己尝试:

HTML:

<section>
    <span id=kubi_synopsys>Some content and the space: </span>
</section>

使用Javascript:

$("#synopsys").keydown(function(e){
    if(e.keyCode===13){//press enter
        $("#synopsys").html($("#synopsys").text()) //removing new lines
        //posting data
        //#episode is a <data> tag containing the current episode's info
        $.post("synopsys-set.php",{
            series: $("#episode").data("series"),season: $("#episode").data("season"),episode: $("#episode").data("episode"),synopsys: $("#synopsys").text()
        },"json")
        .success(function(data){
            console.log("success",atob(data.response))
        })
        .error(function(){
            console.log("error")
        })
    }
})

PHP:

<?php
//acquisition
$series = isset($_POST['series'])? (int)$_POST['series'] :0;
$season = isset($_POST['season'])? (int)$_POST['season'] :0;
$episode = isset($_POST['episode'])? $_POST['episode'] :0;
$version = isset($_POST['version'])? htmlspecialchars(trim($_POST['version'])) :'';
$synopsys = isset($_POST['synopsys'])? htmlspecialchars(trim($_POST['synopsys'])) :'';

header('Content-type: application/json');
echo json_encode(array('response'=> base64_encode($synopsys)));

解决方法

尝试删除:

$("#synopsys").html($("#synopsys").text()) //removing new lines

因为这不是必需的.无论如何,你在发布数据时在#synopsys上使用text().

您可以使用trim()删除所有前导和尾随空格.

synopsys: $("#synopsys").text().trim()

要么

您可以使用正则表达式删除所有空格字符(制表符,换行符等)

synopsys: $("#synopsys").text().replace(/s+/,' ').trim()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读