gpt4 book ai didi

php - 使用 preg_replace_callback 查找和替换具有可变数量参数的函数签名

转载 作者:行者123 更新时间:2023-12-04 08:45:50 25 4
gpt4 key购买 nike

使用 PHP preg_replace_callback函数,我想用子字符串“X1X2”替换模式“function([x1,x2])”的出现,用子字符串“X1X2X3”替换“function([x1,x2,x3])”,一般来说:“function([x1,x2,...,x2])"带有子字符串 "X1X2...Xn"-- 在给定的字符串中。
感谢 Wiktorthis previous question ,我让它适用于带有两个参数的函数:

// $string is the string to be searched
$string = preg_replace_callback('/function\(\[([^][\s,]+),([^][\s,]+)\]\)/', function ($word) {
$result = strtoupper($word[2]) . strtoupper($word[2]);
return $result;
}, $string);
我想更进一步,使其适用于具有任意数量参数的函数。我尝试使用正则表达式 '/function\(\[[([^][\s,]+)]+[,]*\]\)/'作为一种说法,我想要一个重复的非白色子字符串,后跟可选的逗号 - 以说明最后一个没有后跟逗号的函数参数。然而,这让 PHP 提示正则表达式不正确。
任何帮助表示赞赏,
谢谢。

最佳答案

您可以匹配和捕获 function([ 之间的所有内容和 ])用一个简单的 binary_function\(\[(.*?)]\) regex 然后用逗号分割内容,并连接回大写字符串:

$text = 'binary_function([x,y]) and binary_function([x1,y1,z1])';
echo preg_replace_callback('~binary_function\(\[(.*?)]\)~', function ($m) {
return implode("", array_map(function ($x) { return strtoupper($x); }, explode(",", $m[1])));
}, $text);
// => XY and X1Y1Z1
PHP demo .
您可以 trim()如果 ([ 内可以有空格,则输入值和 ]) .

关于php - 使用 preg_replace_callback 查找和替换具有可变数量参数的函数签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64335565/

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