如何在php中替换方括号及其内容。 例如,我想输出类似
的内容// 'Hello World Today Hello Everybody Anybody'
当我echo $txt
时。
$txt = 'Hello World [this-echo] Hello Everybody [nobody]';
答案 0 :(得分:2)
这是一个简单的搜索和替换您定义的标记。
$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
<强> Fiddle 强>
答案 1 :(得分:-1)
如果未在某处定义括号的内容,您可以使用preg_match_all获取它们:
$string = 'This is a [test]';
preg_match_all('/\[([^\]*]+?)\]/', $string, $matches);
正则表达式将匹配左括号和右括号之间的所有内容,并将结果放入匹配数组中。
示例的匹配数组:
Array(2) {
[0]=>
array(1) {
[0]=>
string(6) "[test]"
}
[1]=>
Array(1) {
[0]=>
string(4) "test"
}
}
现在,您可以将[test]替换为您想要的内容,并在括号之间提供内容。
答案 2 :(得分:-1)
通过Regex执行此操作是实现文本替换的一种方法:
$txt = 'Hello World [this-echo] Hello Everybody [nobody]';
$replaced_text = preg_replace('/(\\[[^\\]]*\\])/i', '<TEXTTOREPLACE>', $txt);
echo $replaced_text;
正则表达式的解释(/ regex / options):
使用:
/(\[[^\]]*\])/i
你匹配从[,除了]之外的所有字符到结束的所有内容,忽略了模式末尾的i的情况。
忽略大小写(大写,小写):
/regex/i