Php str_替换为不替换的内容

Php str_替换为不替换的内容,php,str-replace,Php,Str Replace,你好,斯塔克尔斯, 我只是有一个关于str\u replace()函数的小PHP问题。当我替换某物时,它只会替换一切;没关系。但我想知道的是: str_replace("*", "<strong>", $message); stru替换(“*”、“”、$message); 是否可以使用str_replace替换代码,如*此内容为粗体*,仅包含内容,但仍将星号替换为和 例如: 原件:**应为粗体** 更换后:应为粗体 对于将此标记为重复的人:这不是关闭HTML标记,而是替换 我希望

你好,斯塔克尔斯,

我只是有一个关于
str\u replace()
函数的小PHP问题。当我替换某物时,它只会替换一切;没关系。但我想知道的是:

str_replace("*", "<strong>", $message);
stru替换(“*”、“”、$message);
是否可以使用str_replace替换代码,如*此内容为粗体*,仅包含内容,但仍将星号替换为

例如:

原件:
**应为粗体**
更换后:
应为粗体

对于将此标记为重复的人:这不是关闭HTML标记,而是替换


我希望我没有那么不清楚。谢谢。

改用正则表达式;它更方便:

$message = "**This Should be Bold**";
$message = preg_replace('#\**([^\*]+)\**#m', '<strong>$1</strong>', $message);
echo $message;

你也可以这样做



看看不使用str_replace,您可以使用已有的库来完成,只需查找类似
php标记的内容即可。是否要编写标记解析器?如果是这样,我建议使用现有库而不是编写自己的库(除非您想练习如何编写和优化解析器)@jeroen这是最明智的建议,我支持that@GoudaElalfy为什么将
[^\*]+
更改为
[^\**]+
?以替换2*stars@GoudaElalfy但是在
[]
内部?你确定吗?如果你想支持
**这个粗体有一个*的内部**
,也许你可以尝试一个接一个地进行替换。@Phil_1984_编辑,谢谢。但是,与
[]
中的内容不同,
**此**和**此**都是粗体的
也将变为粗体,
'#\*{1,2}([^\*]+)\*{1,2}#m'
<?php
    $string = '**This Should be Bold**';
    $string = preg_replace("/\*\*(.+?)\*\*/", "<strong>$1</strong>", $string);
    echo $string;
?>