我正在尝试替换2个已解码的html字符之间的十进制数。我知道我需要使用正则表达式,但无法正确编写它。 我的字符串:
$string = 'class="total">5.00</td>';
我需要更改的是5.00,并带有另一个十进制数字。
我试过了:
$string = 'class="total">5.00</td>';
$new_number = 7.00;
echo preg_replace('#\class="total">(.+?)\</td>#', $new_number, $string);
答案 0 :(得分:1)
$string = 'class="total">5.00</td>';
$replacement = '6.00';
echo preg_replace('/(class="total">)(\d+\.\d{1,2})(<\/td>)/', '${1}' . $replacement . '${3}', $string);
另一个答案在大多数情况下不起作用,替换将无效,因为它将尝试访问不存在的$ 17捕获。
答案 1 :(得分:0)
你应该试试这个:
$re = '/(class="total">)([0-9]+\.?[0-9]+)(<\/td>)/';
$str = 'class="total">5.00</td>';
$subst = '${1}7.00${3}';
$result = preg_replace($re, $subst, $str);
echo $result;
答案 2 :(得分:0)
您可以使用lookaround
^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s(.+)[^\)]$