Php 删除括号中所有出现的文本,包括它们本身
我需要删除括号中所有出现的文本,包括行本身 我使用一段值得的代码,直到它出现在多个元素中Php 删除括号中所有出现的文本,包括它们本身,php,regex,preg-replace,Php,Regex,Preg Replace,我需要删除括号中所有出现的文本,包括行本身 我使用一段值得的代码,直到它出现在多个元素中 $array[] = '[2016-12-26 16:48:57 +0100] pkgacct working dir : /cprsync_back3/tamainut'; $array[] = '[2016-12-26 16:48:57 +0100] Copying SSL certificates, CSRs, and keys...[2016-12-26 16:48:57 +0100] Done'
$array[] = '[2016-12-26 16:48:57 +0100] pkgacct working dir : /cprsync_back3/tamainut';
$array[] = '[2016-12-26 16:48:57 +0100] Copying SSL certificates, CSRs, and keys...[2016-12-26 16:48:57 +0100] Done'
foreach ($array as &$line) {
$line = preg_replace("/\[[^)]+\]/","",$line);
echo $line.PHP_EOL;
}
这适用于第一行,但不适用于第二行
pkgacct working dir : /cprsync_back3/tamainut
Done
什么只需要提取[…]而不需要保存这个[…]?看看循环;你的正则表达式还需要我添加的修复注释吗?量词
$array[
'[2016-12-26 16:48:57 +0100] pkgacct working dir : /cprsync_back3/tamainut',
'[2016-12-26 16:48:57 +0100] Copying SSL certificates, CSRs, and keys...[2016-12-26 16:48:57 +0100] Done'
];
foreach ($array as $key => $line) {
$array[$key] = preg_replace('/\[(.*?)\]/', "", $line);
}
echo '<pre>';
print_r($array);
正则表达式:
说明:
preg_replace("@\[[^][]*(?(?=\[)(?R))[^][]*\]@", "", $line);
这个正则表达式应该也适用于嵌套的括号
代码段:
$line = preg_replace("/\[[^\]]+\]/","",$line);
// here __^
只需将括号替换为字符类中的括号:
当字符串中有匹配项时保存?也许^\[^]+?\].\1*跳过*失败^\[^]+?\].$?顺便说一句,主题也可以是数组。答案应该有解释。这是没有意义的,因为你只是在重复原来的台词……应该有用的,怎么样?说得好。它不匹配]…[括号内的任何内容,因为没有涉及量词。我说我必须将它也应用于?量词的缩短递归条件语句。这是一个线性正则表达式,您可以将其与建议的正则表达式进行比较。@bobblebubble
preg_replace("@\[[^][]*(?(?=\[)(?R))[^][]*\]@", "", $line);
$line = preg_replace("/\[[^\]]+\]/","",$line);
// here __^