php – 解析一个字符串然后发布

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 解析一个字符串然后发布脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我将数据作为字符串从另一个服务发布:
            标题= “姓名”,“姓” &安培; user_1382926 = “迈克”,史密斯 “&安培; user_1383059 =” 索尼”,“威廉姆斯” &安培; user_1303EM000014 = “迈克”,“琼斯”

我在解析这个问题时迷失了,因为user_ *可能是任何东西,它不是一致的.

我试过了:

$query  = explode('&','heading="Firstname","lastname"&user_1382926="Mike",SmITh"&user_1383059="Sonny","Williams"&user_1303EM000014="Mike","Jones"');
$params = array();

foreach( $query as $param ){
list($name,$value) = explode('=',$param);
echo $params[urldecode($name)][] = urldecode($value);
}

但它只是给了我:

"firstname","lastname""Mike",Smith""Sonny","Williams""Mike","Jones"

我希望能够发布到:

$firstname  = $_POST['firstname'];
$lastname   = $_POST['lastname']; 
$stmt = $MysqLi->PRepare("INSERT INTO usertest (firstname,lastname) VALUES (?,?)"); 
$stmt->bind_param('ss',$firstname,$lastname);
$stmt->execute();

我如何解析这个以便正确发布?

解决方法

非常粗糙,但这是我到达的结果:

$names = array();
$string = 'heading="firstname","Smith"&user_1383059="Sonny","Jones"';

$arr = explode("&",$string);

foreach($arr as $key_values){
    if(substr($key_values,5) == 'user_'){
        $piecies = explode("=",$key_values);
        foreach($piecies as $key=>$val){
            if($key%2==0){
                continue;
            }
            preg_match_all('/"(.*?)","(.*?)"/',$val,$first_last_name);
            $names[] = array('firstname'=>$first_last_name[1],'lastname'=>$first_last_name[2]);
        }
    }
}

echo '<pre>',print_r($names),'</pre>';

foreach($names as $name){
    $firstname  = $name['firstname'];
    $lastname   = $name['lastname']; 
    $stmt = $MysqLi->prepare("INSERT INTO usertest (firstname,?)"); 
    $stmt->bind_param('ss',$lastname);
    $stmt->execute(); 
}

注意:我在你的原始字符串中添加了史密斯(“迈克”,“史密斯”)之前的双引号,因为我希望它在OP中缺失.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 解析一个字符串然后发布全部内容,希望文章能够帮你解决php – 解析一个字符串然后发布所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。