2017-09-30 12 views
1

文字の混在した文字列(文字、数字、スペース)の数字を逆順に並べ替える方法はありますか?文字列の数字を逆順にして、同じ文字の順序を維持する方法

例入力:

Dlasdf234dkl sdfkl8886adaf15adfjk7 asdflkj376661a s445s198 

出力例:

Dlasdf432dkl sdfkl6888adaf51adfjk7 asdflkj166673a s544s891 

は、私はいくつかのpreg_*関数や正規表現を試みたが、私は中に示された結果を得るために管理することができませんでした私の出力例。

+2

あなたが試したことを示して、人々があなたのコードに対してフィードバックを提供することができるかもしれないことを、私は多分、ちょうど一致の代わりにコールバックを行うことについて考えるでしょう。 – Jaquez

答えて

1

あなたの正規表現の試行を見てうれしいですが、私は正規表現は良い計画だと思います。

# match digits in the regex 
echo preg_replace_callback('/[\d]+/',function($v){ 
    # reverse string 
    return strrev($v[0]); 
},$str); 
+0

Finnaly私はこれが好きでした<?php $ string = "Dlasdf234dkl sdfkl8886adaf15adfjk7 asdflkj376661a s445s198"; $ patterns = []; $ numbers = preg_match_all( '!\ d +!'、$ string、$ matches); foreachの($マッチとして$マッチ){ \t \t foreachの($ mとして$マッチ){ \t \t \t $パターン[$のM] = strrev($ mの); \t \t} \t} \t $出力= strtr($文字列、$パターン)。 \t echo $ output; ?> – SnatchIT

+0

実際にあなたと私が混在しているのはおそらく最良の解決策です。私は 'strrev()'のことを考えなかったので、これは良い考えでした。 'preg_replace_callback()'を実行すると、ループ内のすべてのループを削除し、文字列内でそれが見つかるたびにそれぞれの置換を行うことができます。 – Rasclatt

+0

TYもう一度、個人的には、あなたのコードがより短く、私のソリューションが良いと思います。私は何か新しいことや有用なことを学ぶことができますが、これはあなたのコードソリューションはまだ私の知識レベルではありません。 – SnatchIT

関連する問題