在PHP中,将数字替换为;“字符串”;取决于范围?

在PHP中,将数字替换为;“字符串”;取决于范围?,php,wordpress,function,Php,Wordpress,Function,我需要一个php函数根据一些范围将一些数字转换成“字符串”(使用引号,因为不确定它是否是正确的名称) 问题 在我的网站上,我有不同的数字(在不同的领域,可能会发生变化),我想修改 我需要一个函数,根据范围将数字更改为“字符串” 信息 数字 数字可以是0到5000 我的射程 从0到150 从151到300 从301到500 最多501 范围-字符串关系 从0到150-->“小于150平方米” 从151到300-->“150-300平方米” 从301到500-->“300-500平方米

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

问题

  • 在我的网站上,我有不同的数字(在不同的领域,可能会发生变化),我想修改
  • 我需要一个函数,根据范围将数字更改为“字符串”
信息

数字

  • 数字可以是0到5000
我的射程

  • 从0到150
  • 从151到300
  • 从301到500
  • 最多501
范围-字符串关系

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

  • 编号:180-->(此编号为151)-->输出:“150-300平方米”
  • 编号:524-->(此编号大于501)-->输出:“高达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;
}
?>

用正则表达式查找数字,然后替换它们。
正则表达式模式\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
函数替换\u编号($str){
预匹配全部(“/(\d+/”,$str,$arr);
//Var_转储($arr);

对于($i=0;$i=0&&$arr[0][$i]=151&&$arr[0][$i]=301&&$arr[0][$i]=501&&$arr[0][$i]到目前为止,你尝试了什么?让我们看看你的代码,这样我们可以给你一些提示。堆栈溢出不是一种编码服务。到目前为止,你管理了什么?你有任何代码吗?对不起。我是新手,所以我所取得的成绩是这样的:@irek19请看下面我的答案。你的问题中有一些冲突,所以我尽了最大努力。你写的数字可以在0到5000之间,你的例子是5240。我只是写了代码,没有把它变成一个函数。在手机上这么做已经足够了,但你想让我把它变成一个函数吗?@Andreas我更正了这个数字(我的错)。我正在使用您的代码阅读一些文档,了解它是如何工作的,并将其更改为函数。如果您可以更改它,那将是非常好的,但如果您不能更改,则可以使用任何文档来学习如何自己执行该操作。