- ベストアンサー
文字の先頭行を削除
PHPのリファレンスで探しておりますが、みつからないため 質問をさせて頂きます。 データとして、 ",1A,2A,3A,4A,5A" または "1A,2A,3A,4A,5A,"として変数(配列)に格納しています。 先頭または末尾の[,]文字だけを削除するような 関数はあるのでしょうか…? substrでは出来ず、rtrimなどで行いましたが うまく行きませんでした…。 もし関数があれば教えていただきたく思います。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
trim()でいけると思いますけどね・・・ まにゅある trim() http://jp.php.net/manual/ja/function.trim.php $str1 = ",1A,2A,3A,4A,5A"; $str2 = "1A,2A,3A,4A,5A,"; $str1_trimed = trim($str1,","); //1A,2A,3A,4A,5A $str2_trimed = trim($str2,","); //1A,2A,3A,4A,5A substr()を使うと",,,,,,,,,,,,1A,,,,,,,,"などのデータに対してダルいので適さないかと。 どうしてもやるのであれば $str = ",,,,,1A,2B,,,,"; $ret = $str; // 先頭の,を排除 while(substr($ret,0,1) === ',') { $ret = substr($ret,1,strlen($ret) - 1); } // 末尾の,を排除 while(substr($ret,strlen($ret) -1,1) === ',') { $ret = substr($ret,0,strlen($ret) - 1); } echo $str . "<br />\n"; echo $ret . "<br />\n"; こんな感じですかね。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4901/10362)
>など数が決まっていませんので、ltrimなどは厳しいのかと思います。(もし間違えていたらすいません) ??数が決まってないことと、lrtim,rtimの機能とは関係ないですが。 再度聞きますが、どう書いてどういう結果になったんですか? あ、もしかして、 >例えば末尾だと・・・ltrimなどは 右(Right)と左(Left)を間違えてませんか?? >2. $b = substr($bbb,1,17); >2. 6W $bbbの値は? $bbb=",6W";だと正しい結果です。
お礼
メッセージありがとうございます。 出来るようになりました。 trim()メソッドの使い方ではなく、その前の 処理が原因で出来なかったようです…。 $str1 = ",1A,2A,3A,4A,5A"; trim()を使用すると【,】すべて削除されて しまったため、厳しいのかと判断してしまいました。 trim,ltrim,rtrim()メソッドをちゃんと 調べてみます。
- notnot
- ベストアンサー率47% (4901/10362)
rtrim, ltrimで出来るはずですが?? どう書いてどういう結果になったんですか? ltrim(",A,B,",",") => "A,B," rtrim(",A,B,",",") => ",A,B" ltim(rtim(",A,B,",","),",") => "A,B"
お礼
メッセージありがとうございます。 スイマセン、説明不足でした。 例えば末尾だと "1A,2A,3A,4A,5A," や "1A," など数が決まっていませんので、ltrimなどは 厳しいのかと思います。(もし間違えていたらすいません) 自分でsubstrで行ったソースコードが 1. $a = substr(',1W,2W,3W,4W,5W,6W', 1, 17); 2. $b = substr($bbb,1,17); 1. 1W,2W,3W,4W,5W,6W 2. 6W なぜか違う結果が出てしまうのです…。 使用するコードとしては【2】を使用します。 【2】を使用し、【1】の結果が出ればいいのですが。 もしよろしければアドバイスお願い致します。
- shimix
- ベストアンサー率54% (865/1590)
専用の関数はないですね。substrを使って「先頭のカンマを削除」「末尾のカンマを削除」を書いたほうが手っ取り早いと思います。 配列に入れてから先頭・末尾が空だったら削除でもいいと思います。私ならそうすると思いますが、それだと困るんですかねぇ・・。
お礼
メッセージありがとうございます。 一応自分で考えた所で、 $bbb = ",1A,2A,3A,4A,5A,6A"; 1. $a = substr(',1A,2A,3A,4A,5A,6A', 1, 17); 2. $b = substr($bbb,1,17); 1. 1W,2W,3W,4W,5W,6W 2. 6W 同じsubstrを使用しているのですが、結果が違いまして…。 2の方を使用するためうまくいきませんでした…。 もしよろしければアドバイスお願い致します。
お礼
コードを教えて頂きありがとうございます。 trim()メソッドで出来ました~。 $str1 = ",1A,2A,3A,4A,5A"; でtrim()を使用した場合に、すべての【,】が 削除されてしまいtrim()では出来ないのかと 思いましたが、どうやらその前の処理が原因で 出来なかったようです。