为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 字符串分割

PHP 字符串分割

PHP
红颜莎娜 2023-08-11 11:07:21
我想将一根绳子分解成不同的部分,由于绳子的性质,我无法完全弄清楚如何去做这件事或者是否可能。下面是我试图分解的字符串:"'1,2,3,4','2,4,5,6,4',NULL, NULL,NULL ,'2,3,4,5', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL"我想要这样:'1,2,3,4','2,4,5,6,4',NULL,NULL,'2,3,4,5'我正在考虑做这样的事情:<?php        $test = 'CALL sp_advert_search_load(\'1,3,4,5\',\'2,4,3\',NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)';    $test1 = explode( '(',$test);    $test1 = explode( ',',$test1[1]);        foreach ($test1 as $food){        echo $food."<br />";;    }    ?>然后尝试使用 ' 以及起点和终点以某种方式将数组重新构建为字符串。有人有更好的方法来解决这个问题吗?
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您似乎有两个问题,但这无论如何都将其分为两部分。


首先是从 中提取参数部分CALL,这会找到第一个参数(并获取字符串的其余部分。然后它用来rtrim()去除尾随)(如果有的话也去除空格)。


第二部分是将字符串拆分为每个参数。因为它现在实际上是一个 CSV,所以我用a作为附件str_getcsv()进行拆分,以将组保持在一起......'


$test = 'CALL sp_advert_search_load(\'1,3,4,5\',\'2,4,3\',NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)';


$params = rtrim(substr($test, strpos($test, "(") + 1), " )");

print_r(str_getcsv($params, ",", "'"));

给...

Array

(

    [0] => 1,3,4,5

    [1] => 2,4,3

    [2] => NULL

    [3] =>  NULL

    [4] =>  NULL

    [5] =>  NULL

    [6] =>  NULL

    [7] =>  NULL

    [8] =>  NULL

    [9] =>  NULL

    [10] =>  NULL

    [11] =>  NULL

    [12] =>  NULL

    [13] =>  NULL

    [14] =>  NULL

    [15] =>  NULL

    [16] =>  NULL

    [17] =>  NULL

    [18] =>  NULL

    [19] =>  NULL

    [20] =>  NULL

    [21] =>  NULL

    [22] =>  NULL

    [23] =>  NULL

    [24] =>  NULL

    [25] =>  NULL

    [26] =>  NULL

    [27] =>  NULL

    [28] =>  NULL

    [29] =>  NULL

    [30] =>  NULL

)


查看完整回答
反对 回复 2023-08-11
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

因为我很无聊,只需提取括号之间的内容,然后将eval其作为数组:


preg_match('/\(.*\)/', $test, $match);

eval("\$result = array$match[0];");

或者:


preg_match('/\((.*)\)/', $test, $match);

eval("\$result = [$match[1]];");

这些将为您提供实际NULL值而不是字符串"NULL",因此您只能在var_dump.


查看完整回答
反对 回复 2023-08-11
  • 2 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信