从php中的字符串替换文本

时间:2015-06-18 07:28:11

标签: php arrays regex string replace

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

的内容
// 'Hello World Today Hello Everybody Anybody'

当我echo $txt时。

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

3 个答案:

答案 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