php 从字符串中去除 [[:char_class:]]

php strips [[:char_class:]] from the string

在 php 中连接 mysql 正则表达式字符 类 时,它们会从结果字符串中消失,即:

$regexp_arr = array('(word1)', '(word2)');
$value = 'word3';
$regexp_str = implode('[[:space:]]', $regexp_arr);
$v1 = '[[:<:]](' . $value . ')';

echo $regexp_str;
// gives
'(word1)(word2)';
// instead of 
'(word1)[[:space:]](word2)'

echo $v1;
// gives
'(word3)' 
//instead of 
'[[:<:]](word3)'

我试过用双引号",结果还是一样。

在php中是否有特殊的方式来连接它?为什么 '[[:char_class:]]' 被剥夺了?

服务器php版本是5.6.36

在MODX中,[[]]是用于indicate they are tags MODX needs to process的特殊字符。即使您 echo 或从数据库中检索它,MODX 也会在渲染时处理它们。

对于调试,您可以使用 exit() 跟进您的 echo。

echo $regexp_str;
exit();

这会使 MODX 短路并为您提供包括方括号在内的字符串的实际值。

如果您希望该值在 MODX 呈现的资源或模板中可见,那么您必须先用它们的 html 实体替换它们:

$regexp_str = str_replace(['[',']'], ['&#91;', '&#93;'], $regexp_str);