PHP 字符串分割

我想将一根绳子分解成不同的部分,由于绳子的性质,我无法完全弄清楚如何去做这件事或者是否可能。


下面是我试图分解的字符串:


"'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 />";;

    }

    ?>

然后尝试使用 ' 以及起点和终点以某种方式将数组重新构建为字符串。


有人有更好的方法来解决这个问题吗?


红颜莎娜
浏览 73回答 2
2回答

绝地无双

您似乎有两个问题,但这无论如何都将其分为两部分。首先是从 中提取参数部分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(&nbsp; &nbsp; [0] => 1,3,4,5&nbsp; &nbsp; [1] => 2,4,3&nbsp; &nbsp; [2] => NULL&nbsp; &nbsp; [3] =>&nbsp; NULL&nbsp; &nbsp; [4] =>&nbsp; NULL&nbsp; &nbsp; [5] =>&nbsp; NULL&nbsp; &nbsp; [6] =>&nbsp; NULL&nbsp; &nbsp; [7] =>&nbsp; NULL&nbsp; &nbsp; [8] =>&nbsp; NULL&nbsp; &nbsp; [9] =>&nbsp; NULL&nbsp; &nbsp; [10] =>&nbsp; NULL&nbsp; &nbsp; [11] =>&nbsp; NULL&nbsp; &nbsp; [12] =>&nbsp; NULL&nbsp; &nbsp; [13] =>&nbsp; NULL&nbsp; &nbsp; [14] =>&nbsp; NULL&nbsp; &nbsp; [15] =>&nbsp; NULL&nbsp; &nbsp; [16] =>&nbsp; NULL&nbsp; &nbsp; [17] =>&nbsp; NULL&nbsp; &nbsp; [18] =>&nbsp; NULL&nbsp; &nbsp; [19] =>&nbsp; NULL&nbsp; &nbsp; [20] =>&nbsp; NULL&nbsp; &nbsp; [21] =>&nbsp; NULL&nbsp; &nbsp; [22] =>&nbsp; NULL&nbsp; &nbsp; [23] =>&nbsp; NULL&nbsp; &nbsp; [24] =>&nbsp; NULL&nbsp; &nbsp; [25] =>&nbsp; NULL&nbsp; &nbsp; [26] =>&nbsp; NULL&nbsp; &nbsp; [27] =>&nbsp; NULL&nbsp; &nbsp; [28] =>&nbsp; NULL&nbsp; &nbsp; [29] =>&nbsp; NULL&nbsp; &nbsp; [30] =>&nbsp; NULL)

繁华开满天机

因为我很无聊,只需提取括号之间的内容,然后将eval其作为数组:preg_match('/\(.*\)/', $test, $match);eval("\$result = array$match[0];");或者:preg_match('/\((.*)\)/', $test, $match);eval("\$result = [$match[1]];");这些将为您提供实际NULL值而不是字符串"NULL",因此您只能在var_dump.
打开App,查看更多内容
随时随地看视频慕课网APP