2017-06-06 93 views
0

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

问题

  • 在我的网站,我有我想修改不同的数字(在不同的领域可能会发生变化)
  • 我需要哪些更改数字成“串”功能根据一个范围

信息

号码

  • 数字可以是从0到5000

我的范围

  • 从0到150
  • 从151至300
  • 从301到500
  • 多达501

范围 - 串关系

  • 从0到150 - > “不到150平方米”
  • 从151到300 - >“150 - 300平方米“
  • 从301到500 - > ”300 - 500 M2“
  • 最多501 - > ”向上至500m 2“

实例

  • 数量:180 - (这个数目是< 300和> 151) - >输出: “150 - 300 M2”
  • 数量:524 - (这个数目是> 501) - >输出:“多达500 M2”

我已经取得了什么 我在寻找一个更好的方式来做到这一点。任何文件也欢迎。

<?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; 
} 
?> 
+0

你到目前为止尝试过什么?让我们看看你的代码,以便我们给你一些提示。堆栈溢出不是一种编码服务。 – Marcel

+0

到目前为止你管理了什么?你有没有任何代码? – Andreas

+0

对不起。我是新手,因此,所有我已经实现的是这样的: <?PHP的 功能my_map_field($数据){ \t $地图=阵列( \t \t '0'=>“小于150平方米”, \t \t '1'=> '小于150 M2', \t \t '2'=> '小于150 M2', \t \t '3'> '小于150 M2', \t \t '4'=>'小于150平方米',/ *想象所有数字*/ \t \t'151'=>'150 - 300平方米',/ *想象一下所有的n */ \t \t'301'=>'300 - 500 m2',/ *想象一下所有的数字*/ \t); \t return isset($ map [$ data])? $ map [$ data]:$ data; } ?> – irek19

回答

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以上的数字。
也因为你没有给出太多的例子,它不会像“我30岁,我的房子是400平方米”这样的字符串,因为它也会取代30。

+0

它很棒!谢谢你的意见。 – irek19

相关问题