我的问题是,我需要一个粗体字符串的一部分。就我而言 6000 Luzern 。这是邮政编码和城镇名称。
<?php
$pattern = '/[0-9]{4}.*(?=,)/';
$replacement = '<strong>'.$pattern.'</strong>';
$subject = 'Hello 6000 Luzern, 0586464129';
echo preg_replace($pattern , $replacement , $subject);
?>
结果: 你好 / [0-9] {4}。*(?=,)/, 5564641
代码正在实现,我需要什么部分,但它怎么能大胆呢? 它应该是这样的:
Hello 6000 Luzern ,5564641
答案 0 :(得分:1)
您可以将正则表达式用作:
$pattern = '/\b[0-9]{4}[^,]+\b/';
并替换为$0
(匹配的字符串):
$replacement = '<strong>$0</strong>';
因为你需要在替换中使用匹配的反向引用。
现在代码:
echo preg_replace($pattern , $replacement , $subject);
//=> Hello <strong>6000 Luzern</strong>, <strong>0586464129</strong>
正则表达式\b[0-9]{4}[^,]+\b
匹配:
\b # word boundary
[0-9]{4} # 4 digits
[^,]+ # 1 or more of non-comma chars
\b # word boundary