首页 > 解决方案 > PHP - 替换字符串之间的所有内容,包括内容

问题描述

我想遍历一个看起来像这样的字符串。

Booo ahh [Hello] and what is [Baby] at your [Mouse]

我的目标是将 every 替换[@@@]为另一个字符串,这不是静态的,但可以处理括号之间的内容。

应该是这样的

function replace_string($text) {
 ...
 //Maybe some kind of loop for all brackets
 {
  $content = ... //For example Hello, Baby, Mouse => @@@
  $replacement = "I'm a " . $content . "!";
  ...
 }
 return $replacedString;
}

我不认为它可以像我的“建议”那样起作用,但我希望我能展示我想做的事情并且有人可以帮助我。

标签: phpstringwebreplace

解决方案


据我了解,您希望最后有这个字符串:

Booo ahh [I'm a Hello!] 你的 [I'm a Mouse!] 是什么 [I'm a Baby!]

所以你可以使用 preg_replace 函数:http://php.net/manual/en/function.preg-replace.php

您的代码将如下所示:

function replace_string($text) 
{     
   return preg_replace('/\[([^\]]+)\]+/', "[I'm a $1!]", $string);
}

所以

<?php

$string = 'Booo ahh [Hello] and what is [Baby] at your [Mouse]';
echo replace_string($string);
// will display 
// Booo ahh [I'm a Hello!] and what is [I'm a Baby!] at your [I'm a Mouse!]

不确定是否要保留括号,如果不想,并且想要

Booo ahh 我是你好!什么是我是婴儿!在你的我是一只老鼠!

只需使用:

preg_replace('/\[([^\]]+)\]+/', "I'm a $1!", $string);

您可以在此处查看正则表达式:https ://regex101.com/r/8hJQr0/1


推荐阅读