preg_replace通过拆分另一个变量来创建两个不同的变量

时间:2015-07-21 19:34:12

标签: javascript php

我正在使用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(单词之间有差距)?提前致谢

2 个答案:

答案 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

这是相当松散的,只是从一个数字开始,然后有一个字母。分组以第一个字母分隔。如果您的代码是字母数字除了数字之外的其他内容,则无法使用。