gpt4 book ai didi

PHP - 如何使用逗号分解字符串,除了当逗号在撇号内时的情况?

转载 作者:可可西里 更新时间:2023-11-01 00:59:46 24 4
gpt4 key购买 nike

我有以下文字:

$string='
blah<br>
@include (\'file_to_load\')
<br>
@include (\'file_to_load\',\'param1\',\'param2\',\'param3\')
';

我想捕获(然后使用 preg_replace_callback 替换)所有出现的“@include”和参数(例如 @include ('file_to_load','param1','param2','param3') )

所以我这样做:

$string='
blah<br>
@include (\'file_to_load\')
<br>
@include (\'file_to_load\',\'param1\',\'param2\')
';
$params=[];
$result = preg_replace_callback(
'~@include \((,?.*?)\)~',//I catch @include, parenthesis and all between them
function ($matches) {
echo '---iteration---';
$params=explode(',',$matches[1]);//exploding by a comma
echo '<pre>';
var_dump($params);
echo '</pre>';
return $matches[1];
},
$string
);

一切都很好,直到逗号出现在参数内部,如下所示:

$string='
blah<br>
@include (\'file_to_load\')
<br>
@include (\'file_to_load\',\'param1,something\',[\'elem\'=>\'also, a comma\']])
';

这里我们在“param1”参数中有一个逗号,现在,在使用 explode() 函数爆炸后,它显然不能像我想要的那样工作。

我有办法通过逗号对字符串进行 explode()(可能通过使用正则表达式),但当逗号位于撇号内时则不行?

最佳答案

使用以下拆分:

,(?=([^']*'[^']*')*[^']*$)

使用preg_splitexplode不支持正则表达式:

代码:

$params = preg_split(',(?=([^']*'[^']*')*[^']*$)',$matches[1]);

关于PHP - 如何使用逗号分解字符串,除了当逗号在撇号内时的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com