私はこれをこの文字列に持っていこうとしています
**string** = 55 Banana Slush 25 Test
の中へFifty five Banana Slush twenty five test
今、私は任意の数を単語に変換する機能を持っていますreplaceNumtoWord($number)
ただし、文字列を取得し、各数値を見つけて、文字列から数値を抽出するのではなく、文字列内の各数値に対して関数を使用する必要があります。
何かアイデアや提案はありますか?
私はこれをこの文字列に持っていこうとしています
**string** = 55 Banana Slush 25 Test
の中へFifty five Banana Slush twenty five test
今、私は任意の数を単語に変換する機能を持っていますreplaceNumtoWord($number)
ただし、文字列を取得し、各数値を見つけて、文字列から数値を抽出するのではなく、文字列内の各数値に対して関数を使用する必要があります。
何かアイデアや提案はありますか?
あなたが使用することができますpreg_replace_callback()
:
$str = preg_replace_callback('/\d+/', function($match) {
return replaceNumToWord($match[0]);
}, $str);
匿名関数をサポートしていない古いバージョンのPHPを使用する必要がある場合:
function _num2word_cb($match) {
return replaceNumToWord($match[0]);
}
$str = preg_replace_callback('/\d+/', '_num2word_cb', $str);
補足:パターン\d+
は、表示される場所に関係なく、任意の数字のシーケンスに一致します。たとえば、「my10、20、30foo」の10、20、および30に一致します。\b\d+\b
20のみに一致させたい場合は、パターンをに変更できます。
preg_replace_callbackを使用できます。
function transNumber($str) {
return preg_replace_callback('/\d+/', function($matches){
return replaceNumtoWord($matches[0]);
}, $str);
}
phpバージョンが5.3未満の場合は、preg_replace_callbackに渡される関数を定義する必要があります。
preg_replace_callback ( mixed $pattern , callable $callback , mixed
$subject [, int $limit = -1 [, int &$count ]] )
この関数の動作は preg_replace() とほぼ同じですが、置換パラメータの代わりにコールバックを指定する必要がある点が異なります。