我正在使用POST XMLHttpRequest将数据发送到PHP脚本。 javascript代码的一部分是:
Option Compare Database
Option Explicit
Private Sub Text0_Click()
Call ctrl_Print(Screen.ActiveControl)
End Sub
PHP代码的部分是:
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);
}
问题在于我希望我将给出的两个变量(if(isset($_POST['send'])) {
$code = preg_replace('#[^0-9]#', '', $_POST['send']);
$name = preg_replace('#[^A-Za-z0-9]#', '', $_POST['send']);
和a
)成为b
和$code
但是当我运行{{1}时PHP脚本给我$name
4336943和phppost(43365, "Hello World 43");
43369HelloWorld43。我如何让PHP scriipt给我$code
43369和$name
作为Hello World 43(单词之间有差距)?提前致谢
答案 0 :(得分:1)
真的只是详细阐述@ 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'];
}
答案 1 :(得分:1)
将数据分成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演示:http://sandbox.onlinephpfunctions.com/code/1831fcef83a75ed94dcf54d9b88d1231714bf349
Regex101:https://regex101.com/r/fI6lO3/1
这是相当松散的,只是从一个数字开始,然后有一个字母。分组以第一个字母分隔。如果您的代码是字母数字除了数字之外的其他内容,则无法使用。