我有一个类似于" $ 2.99"或者可能是" 1.99美元 - 20.99美元"在字符串中有多个价格。
我想将美分包装在上标标签中。
到目前为止,我一直在尝试:
$price = [could be "$x.xx" or could be "$x.xx - $xx.xx"];
$pattern = '/(\$[\d,]+\.)(\d+)([\s\-]*\$[\d,]*\.*)(\d*)(.*)$/';
$formattedPrice = preg_replace($pattern, '$1<sup>$2</sup>$3<sup>$4</sup>$5', $price);
但那只匹配&#34; $ x.xx - $ xx.xx&#34;不只是&#34; $ x.xx&#34;
有没有一种方法可以找到句点的所有实例并包装下两个字符?
感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
试试这个:
$pattern = '/\.([\d]{2})/';
此模式将匹配一段时间后的任何两位数字。
preg_replace($pattern, '.<sup>$1</sup>', '$2.99');
preg_replace($pattern, '.<sup>$1</sup>', '$1.99 - $20.00');
输出:
string(16) "$2.<sup>99</sup>"
string(36) "$1.<sup>99</sup> - $20.<sup>00</sup>"
如果您想要防止在一段时间后选择任意随机的两位数字,但特别是以一美元金额,您可以添加它以确保您使用此模式正确定位正确的子串:
$pattern = '/\$\d\.([\d]{2})/';