PHP - 如何将字符串中的数字更改为字母

时间:2015-04-16 00:00:00

标签: php

我有这样的字符串:

$string = "2 blocks and 4 allerts";

我想将数字2和4转换为字母,输出如下:

$output = "two blocks and four allerts;

我曾尝试使用str_replace()函数,但只有在字符串有一个数字时才有效。

function ( $string = "2 blocks and 4 allerts" ) { 
    return str_replace( 2, 'two', $string );
}

1 个答案:

答案 0 :(得分:1)

您的问题没有显示任何努力,但以下内容可能对您有用:

这很大程度上取决于你的数字会有多长?假设0到9,你会这样做:

$numbers = array(0,1,2,3,4,5,6,7,8,9);

$number_words = array('zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine');

$string = "I have 3 apples.";

$new_string = str_replace($numbers, $number_words, $string);

上述解决方案适用于简单的单词和替换。

例如,对于诸如1995445之类的数字,您应该搜索互联网(或写一个)的函数,这些函数会将数字转换为字符串。

这是一个很好的功能: http://www.karlrixon.co.uk/writing/convert-numbers-to-words-with-php/

我们做的是首先从字符串中提取数字:

$rule = "/([0-9]+)/";
$string = "I have 2 mobile phones, each containing 2500 messages";
$num_match;

然后我们遍历字符串。每次我们只替换第一个出现的数字,捕获它,将其传递给我们的number_to_string()函数,然后获取字符串,在我们的替换函数preg_replace()中使用返回的字符串。我们使用preg_replace()的{​​{1}}参数来限制替换仅限于每次迭代的第一次出现:

$limit

我在浏览器中得到的是:

while( preg_match($rule, $string, $num_match) )
{
    $string = preg_replace("/".$num_match[0]."/", number_to_string($num_match[0]), $string, 1);
}

echo $string;