将Askerisk*转换为<;strong>;在php中

将Askerisk*转换为<;strong>;在php中,php,regex,preg-replace,Php,Regex,Preg Replace,我有以下问题: $str = 'This is a *random* text, with some *bold* markup'; $bold_str = preg_replace('/\*(.*?)\*/','<strong>\\1</strong>',$str); echo $bold_str $str='这是一个*随机*文本,带有一些*粗体*标记'; $bold\U str=preg\U replace('/\*(.*?\*/','\\1,$str); ec

我有以下问题:

$str = 'This is a *random* text, with some *bold* markup';

$bold_str = preg_replace('/\*(.*?)\*/','<strong>\\1</strong>',$str);

echo $bold_str
$str='这是一个*随机*文本,带有一些*粗体*标记';
$bold\U str=preg\U replace('/\*(.*?\*/','\\1,$str);
echo$bold_街
现在仍然重复$str的内容,因为显然没有任何内容被替换。 这将是所需的字符串:

$bold_str = 'This is a <strong>random</strong> text, with some <strong>bold</strong> markup'
$bold_str='这是一个随机的文本,带有一些粗体标记'
当我看到它时,它对我来说很好,所以可能您还有另一个问题,无法在这里演示实际代码

但是,我更喜欢使用以下示例中的负面字符表达式:

$str = 'This is a *random* text, with some *bold* markup';
$bold_str = preg_replace('/\*([^*]*)\*/','<strong>\\1</strong>',$str);
echo $bold_str;
$str='这是一个*随机*文本,带有一些*粗体*标记';
$bold_str=preg_replace('/\*([^*]*)\*/','\\1',$str);
echo$bold_str;

这只是一个偏好的问题,但是当您的表达式增长时,您开始篡改量词/表达式的贪婪性(就像您已经对
*?
所做的那样),这会让您省去很多头痛。此表达式始终具有相同的结果-不依赖于使用ungreedy modifier
U

您的代码对我有效。只需在echo$bold_str的末尾添加一个分号;它看起来确实应该可以工作。为什么不使用两个星号而不是一个星号,并使用PHP的标记库?@Blender,这是因为只有粗体(也许还有斜体)才可以使用。CMS的其余部分使用markitup,它使用一个*表示粗体,所以保持一致很好。你测试过这个吗?因为没有任何量词的
[^*]
是行不通的。还有,为什么它比最初的尝试更好呢?他的代码的这一部分没有问题。@Jon忘记了量词,对吧。而且,它并不是真的比原来的好——只是在贪婪/不贪婪方面。它产生相同的结果,与量词和/或整个表达式的贪婪程度无关。两者确实都起作用。谢谢你们!实际上,在一些更大的PHP代码中使用它,我错过了一个函数不直接回显原始字符串的参数。谢谢大家