我有一个像“1X6TAB”这样的字符串。现在我将一些正则表达式应用于此字符串以删除“TAB”并将“X”替换为“*”,因此我的最终字符串将为“1 * 6”。预期结果为“6”,但结果为“1 * 6”。
代码:
Regexonlynumber("1X6TAB");
function Regexonlynumber($number){
$number = preg_replace("/[^0-9.X]/", '', $number);
echo str_replace('X',"*",$number);die;
}
答案 0 :(得分:12)
而不是str_replace()
,您可以'X'
分隔符explode()
,然后使用array_product()
。
Regexonlynumber("1X6TAB");
function Regexonlynumber($number){
$number = preg_replace("/[^0-9.X]/", '', $number);
echo array_product(explode('X', $number));
}
答案 1 :(得分:3)
你快到了。只需再添加一步即可爆炸和倍增,如下所示:
<?php
function Regexonlynumber($number){
$number = preg_replace("/[^0-9.X]/", '', $number);
$arr = explode("X", $number);
echo $arr[0]*$arr[1];
}
Regexonlynumber("2X6TAB");
?>
你甚至可以这样做:
function Regexonlynumber($number){
$arr = explode("X", $number);
echo $arr[0]*$arr[1];
}
答案 2 :(得分:2)
array_product()函数: - array_product()函数计算并返回数组的乘积。
str_split()函数: - str_split()函数将字符串拆分为数组。
<?php
function Regexonlynumber($number){
$number = preg_replace("/[^0-9,.]/", "", $number);
echo array_product(str_split($number));
}
Regexonlynumber("1X6TAB");
?>
答案 3 :(得分:2)
最好使用eval()
,它还可以计算更复杂的表达式:
Regexonlynumber("3X6-13TAB");
function Regexonlynumber($number){
$number = preg_replace("/[^0-9.X\-\+\/]/", '', $number);
$str = str_replace('X',"*",$number);
eval("\$result = {$str};");
echo $str . " = " . $result . "\n";
}