首页 > 解决方案 > 字符串拆分 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 />";;
    }
    ?>

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

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

标签: phparraysstring

解决方案


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

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

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

$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
)

推荐阅读