2015-04-15 2 views
-2

У меня есть строка, как это:Как преобразовать числа в виде строки букв

$string = "2 blocks and 4 allerts"; 

Я хочу, чтобы преобразовать 2 и 4 к слову, и выход, как это:

$output = "two blocks and four allerts; 

Любая идея ?

спасибо.

Извините, я не являюсь экспертом в области PHP, я имею в виду, по моему вопросу, как я могу изменить числа в строке в тексте, используя определенную функцию, например:

function ($string = "2 blocks and 4 allerts") { 
// how to process ? 
// return $output = "two blocks and four allerts; 
} 
+2

Вы пробовали что-нибудь или сделали некоторые исследования? – Rizier123

+0

Может делать с 'preg_replace()'. Вы ищете только от 0 до 9? – Twisty

+0

Также вы видели: http://stackoverflow.com/questions/11500088/php-express-number-in-words – Twisty

ответ

0

Ваш вопрос не показывает каких-либо усилий, однако может пригодиться вам следующее:

Это очень многое зависит, как долго ваши цифры будут? Предполагая, что от 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(), а затем получаем строку, используем эту возвращенную строку в нашей функции replace, которая является preg_replace(). Мы используем preg_replace() «s $limit паров ограничить замену только первое появление на каждую итерацию:

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

echo $string; 

Что я получаю в моем браузере, то:

I have two mobile phones, each containing two thousands and five hundred messages 
+0

Ничего себе, спасибо. Ответ достаточно, чтобы помочь мне понять мои ошибки. Еще раз благодарю вас. –

+0

Рад видеть, что это работает для вас. –

Смежные вопросы