0

我正在尝试使用 PHP 从给定的字符串中查找和替换。我想这类似于您可能在文本编辑器(正则表达式或类似)中执行的操作。

这是一个示例初始字符串:

[quote=Registered_User;0123456]This is a message.[/quote]

所需的输出:

[quote=Registered_User pid=0123456]This is a message.[/quote]

我已经尝试使用 preg_replace(),但是当我想保留数字元素时会出现问题。

我不能使用 str_replace() 替换 ';' 使用 'pid=' 因为在初始字符串中可能存在找到孤立分号的实例。

感谢您的时间。

4

3 回答 3

2

我们可以找到一个在单词、分号和数字之后出现的实例,quote=然后将其替换为新格式:

preg_replace("/quote=(\w+);(\d+)/", "quote=$1 pid=$2", $string);
于 2012-04-12T01:28:12.380 回答
0

如果字符串“Registered_User;0123456]This is a message”的开头没有改变,你可以像下面这样。

$string = "[quote=Registered_User;0123456]This is a message.[/quote]";
$beginStr = "[quote=Registered_User pid=";
$string = $beginStr . substr($string,23);
于 2012-04-12T01:43:51.323 回答
-1

这将找到一个分号,前面有 15 个单词字符,前面有“quote=”,并将该分号更改为“pid=”,但是这仅在单词 (Registered_User) 为 15 个字符时才有效。

preg_replace("/(?<=([quote=]{6}(\w{15})));/", " pid=", $string);
于 2012-04-12T01:57:51.967 回答