PHP用HTML包装字符串的最后两个字母
我在尝试替换几个字符串时遇到问题。基本上,我的页面上有一堆价格 人民币148.00元 我想做的是只对最后2个数字进行替换,这样我就可以像这样做了 人民币14800元 Preg replace适用于RMB部件,因为它始终存在 我的问题是最后两个数字可以是任何东西,这一切都取决于价格,所以我不能只是删除和替换,我只需要在它们周围包装HTML标记PHP用HTML包装字符串的最后两个字母,php,preg-replace,Php,Preg Replace,我在尝试替换几个字符串时遇到问题。基本上,我的页面上有一堆价格 人民币148.00元 我想做的是只对最后2个数字进行替换,这样我就可以像这样做了 人民币14800元 Preg replace适用于RMB部件,因为它始终存在 我的问题是最后两个数字可以是任何东西,这一切都取决于价格,所以我不能只是删除和替换,我只需要在它们周围包装HTML标记 $string = $product['price']; $string = preg_replace('/[\x00-\x1F\x80-\xFF]/',
$string = $product['price'];
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
echo preg_replace('/RMB/', '<sup class="currency-sym">RMB</sup>', $string, 1);
假设最后两个字符是数字,您可以
$string=preg_replace('/(\d\d)$/', '<sup class="currency-sym">\1</sup>', $string);
如果没有,
$string=preg_replace('/(..)$/', '<sup class="currency-sym">\1</sup>', $string);
我们应该做到这一点
交替使用
$string=substr($string,0,-2).'<sup class="currency-sym">'.substr($string,-2).'</sup>';
假设最后两个字符是数字,您可以
$string=preg_replace('/(\d\d)$/', '<sup class="currency-sym">\1</sup>', $string);
如果没有,
$string=preg_replace('/(..)$/', '<sup class="currency-sym">\1</sup>', $string);
我们应该做到这一点
交替使用
$string=substr($string,0,-2).'<sup class="currency-sym">'.substr($string,-2).'</sup>';
下面是一个正则表达式解决方案,它在字符串末尾查找最后的数字表示法
$string = 'RMB148.00';
$string = preg_replace('/(\d+)\.(\d{2})\z/','$1<sup>$2</sup>',$string);
echo $string;
下面是一个正则表达式解决方案,它在字符串末尾查找最后的数字表示法
$string = 'RMB148.00';
$string = preg_replace('/(\d+)\.(\d{2})\z/','$1<sup>$2</sup>',$string);
echo $string;
密码
解释
substr$s,$i,$l获取$s的$l符号,从$i开始索引从零开始
所以,第一个substr$string,0,strlen$string-2获取除最后两个符号之外的所有字符串
第二个substr$string,strlen$string-2,2只获取最后两个符号
代码。
解释
substr$s,$i,$l获取$s的$l符号,从$i开始索引从零开始
所以,第一个substr$string,0,strlen$string-2获取除最后两个符号之外的所有字符串
第二个substr$string,strlen$string-2,2只获取最后两个符号
您可以在explode函数中使用以下命令
$string = explode ('.', $product['price']);
$new_string = $string[0].'<sup>'. $string [1]. '</sup>';
并用同样的方法对人民币进行正则表达式处理。您可以使用下面的explode函数
$string = explode ('.', $product['price']);
$new_string = $string[0].'<sup>'. $string [1]. '</sup>';
用同样的方法为人民币做正则表达式。你应该使用模式匹配正则表达式。请注意,替换参数中的$1与模式参数中的\d{2}匹配。preg_replace仅替换匹配的图案。这种模式是匹配的。后跟任意两位数字。自从未包含在替换参数中。它不会显示在$string中 当然,您可以使用一个preg_replace来执行您想要的操作:
$string = preg_replace('/^(RMB)(\d+)(\.(\d{2}))?$/', "<sup class='currency-sym'>$1</sup>$2<sup>$4</sup>", $string);
如果您想要DOM完整性,第二个示例可能是一个好主意,否则它会在没有十进制数时创建一个空值。您应该使用模式匹配正则表达式。请注意,替换参数中的$1与模式参数中的\d{2}匹配。preg_replace仅替换匹配的图案。这种模式是匹配的。后跟任意两位数字。自从未包含在替换参数中。它不会显示在$string中 当然,您可以使用一个preg_replace来执行您想要的操作:
$string = preg_replace('/^(RMB)(\d+)(\.(\d{2}))?$/', "<sup class='currency-sym'>$1</sup>$2<sup>$4</sup>", $string);
如果您想要DOM完整性,第二个示例可能是一个好主意,否则它会在没有小数点时创建一个空值。@NooBskie,如果您需要解释,请按照我的说明进行answer@NooBskie,如果你需要解释,请听我的回答