2013-07-24 3 views
5

PHPのカンマでスペースや改行を交換しますがそう私が検索

を助けた何かを見つけることができませんでした、私は基本的にちょうど間のカンマを配置する必要があり、データの束を持って、すべてがそうの記録から来るデータ

13 
566 
888 
958 
898 

と私はそれが好きで出力する必要があります:それはのように来て、私は任意の2桁を超えるようなものを動かすことができれば

13,566,888,958,898 

さらに良い:

566,13,888,958,989 

私はそれが非常に簡単なので、基本的にフォームを作って、GETで渡してからURLから変数を読み、それからstr_replace( ""、 "、 、$ outtext)を使って空白をカンマで置き換えることができます。私はそれをエコーすることができますし、実際に素早くcopypastaすることができます。問題は、データに新しい行が入っていると思います。 \ n "と"%0D%0A "を試しましたが、それを置き換えることはありません。

とにかく、ここで私が使用しているコードだ、多分誰かが私に私が欠けている単純なことを伝えることができ、

<?php 
if (isset($_GET['intext'])) { 
    $outtext=$_GET['intext']; 

    $newout=str_replace(" ", ",", $outtext); 

    echo $newout; 
    //testing 
    //echo(str_replace(" ",",","$outtext")); 
} 
?> 

と私も投げについて考えHTML

<form name="indata" id="indata" method="get" action="index.php"> 
     <textarea id="intext" name="intext"></textarea> 
     <input type="submit" id="submit" name="submit"> 
    </form> 

それを配列に組み込み、それを畳み込んでいますが、それはしばらくしており、私はそれをやる方法を忘れてしまいます。

答えて

10

"\ r \ n"バージョンの改行がある場合でも、改行が登録されている可能性があります。 "\ n"を取り除き、 "\ r"を残しておきます。バージョン(より読みやすい)

$str = preg_replace('/\s+/',',',str_replace(array("\r\n","\r","\n"),' ',trim($str))); 

クリーナー:

$str = preg_replace('#\s+#',',',trim($str)); 
+0

はい、すごくいいですね。これは完全に機能します。もう1つの質問は、どのようにして最終的なものを取り除くことができるのですか?13,566,569が出てきます。私は13,566,569が欲しいだけです(私はその数字の間に13を移動したいのですが、と汚い必要性)編集:nvm私はderpです、私はちょうどsubstr($出力、0、-1)にエコーします – salty

+0

@salty置換を適用する前に文字列を 'トリミングすることができます - 編集された答え – SmokeyPHP

+0

を参照してくださいありがとうSmokeyPHP、トリムは間違いなくエレガントです:) – salty

4

あなたが言ったように、内破、アレイを使用することは良い方法である:

$input = trim($_GET['intext']); 
$numbers = preg_split('/\s+/', $input); 
echo implode(',', $numbers); 

これは、任意のパディングの入力をトリム、空白に基づいて配列に分割し、コンマで配列を暗黙にします。

0

システムには、LF "\ n"で区切られた行とCR + LF "\ r \ n"で区切られた行があります。 str_replaceまたはpreg_replaceを実行して、スペース、CR + LF、およびLFを置き換えることができます。あなたは正規表現を使用して、あなたの正規表現で解決するものをカンマで置き換えることができます。

改行コードと文字列の元に置き換えられないコードを表示し、おそらくそれが機能していない理由を伝えることができます。

2

最初に余分な空白またはキャリッジリターンと改行を入力から削除し、カンマで置き換えます。

<?php 
    if(isset($_GET['intext'])){ 
     var_dump($_GET['intext']); 

     //get and trim the input 
     $value = trim($_GET['intext']); 

     //clean the input by removing extra white spaces 
     $value = preg_replace('/\s+/', ' ', $value); 

     //replace spaces with comma 
     $value = str_replace(" ", ',', $value); 

     //echo output 
     echo $value; 
    } 
?> 

<form name="indata" id="indata" method="get" action=""> 
    <textarea id="intext" name="intext"></textarea> 
    <input type="submit" id="submit" name="submit"> 
</form>