Ваш вопрос не показывает каких-либо усилий, однако может пригодиться вам следующее:
Это очень многое зависит, как долго ваши цифры будут? Предполагая, что от 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
Вы пробовали что-нибудь или сделали некоторые исследования? – Rizier123
Может делать с 'preg_replace()'. Вы ищете только от 0 до 9? – Twisty
Также вы видели: http://stackoverflow.com/questions/11500088/php-express-number-in-words – Twisty