• ベストアンサー

文字の先頭行を削除

PHPのリファレンスで探しておりますが、みつからないため 質問をさせて頂きます。 データとして、 ",1A,2A,3A,4A,5A" または "1A,2A,3A,4A,5A,"として変数(配列)に格納しています。 先頭または末尾の[,]文字だけを削除するような 関数はあるのでしょうか…? substrでは出来ず、rtrimなどで行いましたが うまく行きませんでした…。 もし関数があれば教えていただきたく思います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

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"; こんな感じですかね。

NeilMania
質問者

お礼

コードを教えて頂きありがとうございます。 trim()メソッドで出来ました~。 $str1 = ",1A,2A,3A,4A,5A"; でtrim()を使用した場合に、すべての【,】が 削除されてしまいtrim()では出来ないのかと 思いましたが、どうやらその前の処理が原因で 出来なかったようです。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.4

>など数が決まっていませんので、ltrimなどは厳しいのかと思います。(もし間違えていたらすいません) ??数が決まってないことと、lrtim,rtimの機能とは関係ないですが。 再度聞きますが、どう書いてどういう結果になったんですか? あ、もしかして、 >例えば末尾だと・・・ltrimなどは 右(Right)と左(Left)を間違えてませんか?? >2. $b = substr($bbb,1,17); >2. 6W $bbbの値は? $bbb=",6W";だと正しい結果です。

NeilMania
質問者

お礼

メッセージありがとうございます。 出来るようになりました。 trim()メソッドの使い方ではなく、その前の 処理が原因で出来なかったようです…。 $str1 = ",1A,2A,3A,4A,5A"; trim()を使用すると【,】すべて削除されて しまったため、厳しいのかと判断してしまいました。 trim,ltrim,rtrim()メソッドをちゃんと 調べてみます。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

rtrim, ltrimで出来るはずですが?? どう書いてどういう結果になったんですか? ltrim(",A,B,",",") => "A,B," rtrim(",A,B,",",") => ",A,B" ltim(rtim(",A,B,",","),",") => "A,B"

NeilMania
質問者

お礼

メッセージありがとうございます。 スイマセン、説明不足でした。 例えば末尾だと "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)
回答No.1

専用の関数はないですね。substrを使って「先頭のカンマを削除」「末尾のカンマを削除」を書いたほうが手っ取り早いと思います。 配列に入れてから先頭・末尾が空だったら削除でもいいと思います。私ならそうすると思いますが、それだと困るんですかねぇ・・。

NeilMania
質問者

お礼

メッセージありがとうございます。 一応自分で考えた所で、 $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の方を使用するためうまくいきませんでした…。 もしよろしければアドバイスお願い致します。

関連するQ&A