preg_match 括号中字符串之后的第一个字符串
preg_match first string after string in parentheses
我四处寻找接近于此的解决方案,但未能成功找到解决方案。我希望通过 php_codesniffer 清理一些遗留代码,但修复程序不会修复超过 80 列的注释或数组,只是让您了解它们。我有一个适用于评论的解决方案,但我被困在数组的正则表达式上。
我想修复的示例行是:
$line = "drupal_add_js(array('my_common' => array('my_code_validate' => variable_get('my_code_validate', FALSE), 'inner_index2 => 'inner_value2'), 'another_item' => 'another_value'), 'setting');";
$solution = preg_match('/array.*(\(.*?\))/', $line);
echo $solution;
我愿意
$solution = "'my_common' => array('my_code_validate' => variable_get('my_code_validate', FALSE), 'inner_index2 => 'inner_value2'), 'another_item' => 'another_value'";
但我得到的是 1。请注意,那里还有另一个相当常见的数组。我只想捕获第一个数组的值,然后我可以从那里将它们分成不同的行。最后,我想与 php codesniffer 项目分享我的解决方案,这样可以加分展示如何为 squizlabs 编写新的修复程序。
试试这个解决方案:
.*?array\(('.*?)\), [^\)]+'\);.*
替换为:
您可以使用
if (preg_match('~array(\(((?:[^()]++|(?1))*)\))~', $s, $matches)) {
echo $matches[2];
}
详情
array
- 文字子串
(\(((?:[^()]++|(?1))*)\))
- 第 1 组:
\(
((?:[^()]++|(?1))*)
- 第 2 组(所需值):
(?:[^()]++|(?1))*
- 除 (
和 )
之外的 1+ 个字符的零次或多次重复或递归的整个第 1 组模式
\)
- 一个 )
字符
我四处寻找接近于此的解决方案,但未能成功找到解决方案。我希望通过 php_codesniffer 清理一些遗留代码,但修复程序不会修复超过 80 列的注释或数组,只是让您了解它们。我有一个适用于评论的解决方案,但我被困在数组的正则表达式上。 我想修复的示例行是:
$line = "drupal_add_js(array('my_common' => array('my_code_validate' => variable_get('my_code_validate', FALSE), 'inner_index2 => 'inner_value2'), 'another_item' => 'another_value'), 'setting');";
$solution = preg_match('/array.*(\(.*?\))/', $line);
echo $solution;
我愿意
$solution = "'my_common' => array('my_code_validate' => variable_get('my_code_validate', FALSE), 'inner_index2 => 'inner_value2'), 'another_item' => 'another_value'";
但我得到的是 1。请注意,那里还有另一个相当常见的数组。我只想捕获第一个数组的值,然后我可以从那里将它们分成不同的行。最后,我想与 php codesniffer 项目分享我的解决方案,这样可以加分展示如何为 squizlabs 编写新的修复程序。
试试这个解决方案:
.*?array\(('.*?)\), [^\)]+'\);.*
替换为:
您可以使用
if (preg_match('~array(\(((?:[^()]++|(?1))*)\))~', $s, $matches)) {
echo $matches[2];
}
详情
array
- 文字子串(\(((?:[^()]++|(?1))*)\))
- 第 1 组:\(
((?:[^()]++|(?1))*)
- 第 2 组(所需值):(?:[^()]++|(?1))*
- 除(
和)
之外的 1+ 个字符的零次或多次重复或递归的整个第 1 组模式
\)
- 一个)
字符