使用正则表达式和PHP将字符串的一部分加粗

使用正则表达式和PHP将字符串的一部分加粗,php,regex,Php,Regex,我的问题是,我需要一个粗体字符串的一部分。在我的情况下,6000卢塞恩。这是邮政编码和城镇名称 <?php $pattern = '/[0-9]{4}.*(?=,)/'; $replacement = '<strong>'.$pattern.'</strong>'; $subject = 'Hello 6000 Luzern, 0586464129'; echo preg_replace($pattern , $replacement , $subject); ?&

我的问题是,我需要一个粗体字符串的一部分。在我的情况下,6000卢塞恩。这是邮政编码和城镇名称

<?php
$pattern = '/[0-9]{4}.*(?=,)/';
$replacement = '<strong>'.$pattern.'</strong>';
$subject = 'Hello 6000 Luzern, 0586464129';
echo preg_replace($pattern , $replacement , $subject);
?>

结果: 你好/[0-9]{4}.*(=,)/,5564641

代码正在意识到,我需要什么部分,但它如何才能使其大胆? 应该是这样的:


您好,您可以将您的正则表达式用作:

$pattern = '/\b[0-9]{4}[^,]+\b/';
并替换为
$0
(匹配字符串):


在替换参数中使用html标记?!你推荐什么?非常感谢阿努巴瓦。我使用以下命令:$pattern='/[0-9]{4}.*(=,)/';它非常适合我的情况。谢谢你的解释;-)我发现了另一个模式,它匹配得更直:$pattern='/[0-9]{4}([A-Z])\w+/';在某些情况下,另一种模式不会在第一个逗号处停止。希望这对其他人也有帮助。@anubhava如果你有时间,你能回答我的问题吗?
$replacement = '<strong>$0</strong>';
echo preg_replace($pattern , $replacement , $subject);
//=> Hello <strong>6000 Luzern</strong>, <strong>0586464129</strong>
\b       # word boundary
[0-9]{4} # 4 digits
[^,]+    # 1 or more of non-comma chars
\b       # word boundary