在PHP中,根据范围用“string”替换数字?

时间:2017-06-06 17:43:43

标签: php wordpress function

根据某些范围,我需要一个php函数将一些数字转换为“字符串”(使用引号,因为不确定它是否是正确的名称)。

问题

  • 在我的网站上,我有不同的数字(在可能会改变的不同字段中)我想要修改
  • 我需要一个功能,根据范围将数字更改为“字符串”

信息

数字

  • 数字可以是0到5000

我的范围

  • 从0到150
  • 从151到300
  • 从301到500
  • 最多501

范围 - 字符串关系

  • 从0到150 - > “小于150平方米”
  • 从151到300 - > “150 - 300 m2”
  • 从301到500 - > “300 - 500 m2”
  • 最多501 - > “高达500平方米”

实施例

  • 数量:180 - (此数字<300且> 151) - &gt;产量:“150 - 300 m2”
  • 数量:524 - (此数字> 501) - &gt;输出:“最多500平方米”

我取得的成就 我正在寻找一种更好的方法来做到这一点。任何文件也欢迎。

<?php
function my_map_field($data) {
    $map = array(
        '0' => 'Less than 150 m2',
        '1' => 'Less than 150 m2',
        '2' => 'Less than 150 m2',
        '3' => 'Less than 150 m2',
        '4' => 'Less than 150 m2', /*Imagine all the numbers*/
        '151' => '150 - 300 m2',  /*Imagine all the numbers*/
        '301' => '300 - 500 m2',  /*Imagine all the numbers*/
    );

    return isset( $map[$data] ) ? $map[$data] : $data;
}
?>

1 个答案:

答案 0 :(得分:0)

用正则表达式查找数字,然后str_replace它们 正则表达式\ d +找到数字。

function replace_numbers($str) {

 Preg_match_all("/(\d+)/", $str, $arr);
 //Var_dump($arr);
 For ($i=0; $i<count($arr[0]);$i++){
     If($arr[0][$i]>=0 && $arr[0][$i]<=150) $str = str_replace($arr[0][$i], "less than 150 m2", $str);
     If($arr[0][$i]>=151 && $arr[0][$i]<=300) $str = str_replace($arr[0][$i], "151 - 300 m2", $str);
     If($arr[0][$i]>=301 && $arr[0][$i]<=500) $str = str_replace($arr[0][$i], "301 - 500 m2", $str);
     If($arr[0][$i]>=501 && $arr[0][$i]<=5000) $str = str_replace($arr[0][$i], "up to 500 m2", $str);

 }

Return $str;
}

$str ="Number: 180, Number: 524";  // the string that needs attention
$newstr = replace_numbers($str); // newstr is the old string but with replaced numbers

我没有包含任何照顾5000以上数字的东西 此外,由于你没有提供太多的例子,它不会像#34;我30岁,我的房子是400平方米&#34;因为它也将取代30。