我使用POST XMLHttpRequest以便将数据发送到PHP脚本。这部分javascript代码是这样的:
function phppost(a, b){
var hr = new XMLHttpRequest();
hr.open("POST", "phppostexample.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.send("send="+a+""+b);
}
这部分PHP代码是这样的:
if(isset($_POST['send'])) {
$code = preg_replace('#[^0-9]#', '', $_POST['send']);
$name = preg_replace('#[^A-Za-z0-9]#', '', $_POST['send']);
问题是,我想要两个变量,我将给(a
和b
),成为$code
和$name
,但当我运行phppost(43365, "Hello World 43");
的PHP脚本给我$code
为4336943和$name
为43369HelloWorld43。我怎样才能使PHP脚本给我$code
作为43369和$name
作为Hello World 43(与单词之间的差距)?提前感谢
真的只是在详细说明@charlietfl的评论:
function phppost(a, b){
var hr = new XMLHttpRequest();
hr.open("POST", "phppostexample.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.send("code="+a+"&name="+b);
}
然后if(isset($_POST['code'])) {
$code = $_POST['code'];
$name = $_POST['name'];
}
最好将数据分成2个参数。
如果数据结构是一致的,你可以用一个正则表达式来完成这个。
$a = '43365Hello World 43';
preg_match('#^(d+)?([a-z].*)$#i', $a, $data);
$code = $data[1];
$name = $data[2];
echo $code . "n";
echo $name . "n";
PHP Demo: http://sandbox.onlinephpfunctions.com/code/1831fcef83a75ed94dcf54d9b88d1231714bf349
Regex101: https://regex101.com/r/fI6lO3/1
这是相当松散的,只是以一个数字开始,然后是一个字母。分组在第一个字母处分开。如果你的代码是字母数字除了数字以外的任何东西,这将不起作用