Php 如何使用preg_replace regex将*转换为HTML

Php 如何使用preg_replace regex将*转换为HTML,php,regex,preg-replace,Php,Regex,Preg Replace,我有几段文字中有这种标记: text1 *text2* text3 我需要把它们变成 text1 <strong>text2</strong> text3 text1text2text3 我试过这个密码 $pattern = '~\*(.*)\*~'; $replacement = '<strong>\1</strong>'; $str = preg_replace($pattern, $replacement, $str); $pat

我有几段文字中有这种标记:

text1 *text2* text3
我需要把它们变成

text1 <strong>text2</strong> text3
text1text2text3
我试过这个密码

$pattern = '~\*(.*)\*~'; 
$replacement = '<strong>\1</strong>'; 
$str = preg_replace($pattern, $replacement, $str);
$pattern='~\*(.*)\*~';
$replacement='\1';
$str=preg_replace($pattern,$replacement,$str);
它无法识别第二个闭合星号。结尾的“strong”html标记仅出现在同一文本的下一个(第三个)星号处

我错过了什么

更新:阿维纳什的模式解决了这个问题,但这里有一个相关的模式

我使用了相同的模式(两个模式中的第一个)将下划线替换为标记。但是相同的段落包含语法为
的图像。如何避免这个正则表达式旋转这些下划线?(宽度/高度数字不同,而不是恒定的。)

例如,来自这样一篇文章

Lorem ipsum dolor sit amet, <img src="/my_image.jpg" width="700" height="300">  adipiscing elit. _Fusce pharetra_ a dui nec interdum. 
Lorem ipsum dolor sit amet,一位杰出的律师。
我想要这个

Lorem ipsum dolor sit amet, <img src="/my_image.jpg" width="700" height="300">  adipiscing elit. <em>Fusce pharetra</em> a dui nec interdum.
Lorem ipsum door sit amet,adiprising elit.Fusce pharetra dui nec interdum。

您需要在捕获组中出现的
*
之后添加量词
,以进行尽可能短的匹配

$pattern = '~\*(.*?)\*~'; 


这对我很有用。如果正好有两个双引号,你的正则表达式就可以工作。啊,我使用了相同的模式(两个中的第一个)用标记替换下划线。但是相同的段落包含了一些图像,语法类似于如何避免正则表达式旋转这些下划线?(宽度/高度数字不同,而不是恒定的。)在您的问题中添加上述注释,并描述您的输入和预期输出。感谢Avinash,我尝试了您发布的正则表达式,但不知道如何与其余代码合并。我用第二个问题的详细版本更新了主题开场白。
$pattern = '~\*[^*]*\*~';