亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號