我遇到了尝试在几个字符串上进行替换的问题。基本上我所拥有的是我的页面上的一堆价格看起来像
RMB 148.00
我想要做的是仅对最后2个数字进行替换,这样我就可以执行类似
的操作元 148 00
Preg替换适用于RMB部分,因为它始终存在。
我的问题是最后两个数字可以是任何一切都取决于价格所以我不能删除和替换,我需要在它们周围包裹HTML <sup>
标签。
$string = $product['price'];
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
echo preg_replace('/RMB/', '<sup class="currency-sym">RMB</sup>', $string, 1);
答案 0 :(得分:2)
假设最后两个字符是数字,您可以
$string=preg_replace('/(\d\d)$/', '<sup class="currency-sym">\1</sup>', $string);
如果没有,
$string=preg_replace('/(..)$/', '<sup class="currency-sym">\1</sup>', $string);
应该这样做。
Alternativly use
$string=substr($string,0,-2).'<sup class="currency-sym">'.substr($string,-2).'</sup>';
答案 1 :(得分:1)
这是一个正则表达式解决方案,用于在字符串末尾查找最后的数字符号。
$string = 'RMB148.00';
$string = preg_replace('/(\d+)\.(\d{2})\z/','$1<sup>$2</sup>',$string);
echo $string;
答案 2 :(得分:1)
<?php
$string = '14842.00';
$string = substr($string, 0, strlen($string) - 2) . '<sup>' . substr($string, strlen($string) - 2, 2) . '</sup>';
echo $string;
substr($s, $i, $l)
获取$l
的{{1}}个符号,从$s
索引开始(索引从零开始)。
因此,首先$i
获取除最后两个符号之外的所有字符串。
第二个substr($string, 0, strlen($string) - 2)
只获得最后两个符号。
答案 3 :(得分:1)
您可以将以下内容与explode()函数
一起使用$string = explode ('.', $product['price']);
$new_string = $string[0].'<sup>'. $string [1]. '</sup>';
以同样的方式为人民币做正则表达式。
答案 4 :(得分:1)
您应该使用匹配正则表达式的模式。请注意,替换参数中的$1
与模式参数中的(\d{2})
匹配。 preg_replace()
仅替换匹配的模式。此模式匹配.
后跟任意两位数。由于.
未包含在替换参数中,因此它不会显示在您的$string
中。
$string = preg_replace('/\.(\d{2})$/', '<sup>$1</sup>', $string);
当然,您可以使用一个preg_replace来执行您想要的操作:
$string = preg_replace('/^(RMB)(\d+)(\.(\d{2}))?$/', "<sup class='currency-sym'>$1</sup>$2<sup>$4</sup>", $string);
如果你想要DOM完整性,第二个例子可能是个好主意,否则当没有小数时它会创建一个空的<sup></sup>
。