php中字符串的文本替换

php中字符串的文本替换,php,arrays,regex,string,replace,Php,Arrays,Regex,String,Replace,如何替换php中的方括号及其内容。 例如,我想输出如下内容 // 'Hello World Today Hello Everybody Anybody' 当我回显$txt时 $txt = 'Hello World [this-echo] Hello Everybody [nobody]'; 这是对已定义标记的简单搜索和替换 $text = 'Hello World [this-echo] Hello Everybody [nobody]'; $markers=array('[this-ech

如何替换php中的方括号及其内容。 例如,我想输出如下内容

// 'Hello World Today Hello Everybody Anybody'
当我
回显$txt

$txt = 'Hello World [this-echo] Hello Everybody [nobody]';

这是对已定义标记的简单搜索和替换

$text = 'Hello World [this-echo] Hello Everybody [nobody]';
$markers=array('[this-echo]','[nobody]');
$replacements=array('Today','Anybody');
$text= str_replace($markers,$replacements,$text);
输出

Hello World Today Hello Everybody Anybody

当括号的内容未在某个地方定义时,您可以使用preg\u match\u all获得它们:

$string = 'This is a [test]';
preg_match_all('/\[([^\]*]+?)\]/', $string, $matches);
正则表达式将匹配开始括号和结束括号之间的所有内容,并将结果放入matches数组中

匹配示例的数组:

Array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(6) "[test]"
  }
  [1]=>
  Array(1) {
    [0]=>
    string(4) "test"
  }
}

现在,您可以将[test]替换为您想要的内容,并使括号之间的内容可用。

使用正则表达式进行替换是实现文本替换的一种方法:

$txt = 'Hello World [this-echo] Hello Everybody [nobody]';
$replaced_text = preg_replace('/(\\[[^\\]]*\\])/i', '<TEXTTOREPLACE>', $txt);
echo $replaced_text;
您正在匹配从[,除]之外的所有字符到结束符]的所有内容,忽略模式末尾的大小写和i

忽略大小写(大写、小写):

/regex/i

但我如何动态地做到这一点呢。当我不知道括号[]中使用的字符是什么时。谢谢您的上述回答@Hanky。如果您不知道替换什么以及替换什么,那么您将如何替换?你会用什么来替换那些标记?如果它必须是一个固定的虚拟替换,那么您可以使用正则表达式
/regex/i