• ベストアンサー

splitしない文字列について

split("\t",$moji) で$mojiを分割しているのですが、タブ区切りなのに分割しない文字列があります。 企業秘密な所もあり、問題の文字列そのままを報告できないのですが、分割をキャンセルするような文字コードってあるのでしょうか? その文字コードであやしい物は 「 」:スペース 「!」、「♪」 などが含まれています。 通常であれば10個に分割される文字列がまったく分割されなく分割数は1と出ます。もちろんタブ区切りになっています。 1つの文字列だけの事なのです。原因はまったく不明。よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

文字コードの関係かもしれません。 分割しない文字コードはS-JISですか? EUCに変更すれば正常に動くかもしれません。

goroneko-begin
質問者

お礼

文字コードが原因でした。秀丸で見たら文字コードが原因なのかもわかりません(SJIS)でしたが、文字コードをいろいろと変換すると問題が解消されました。ありがとうございます。

その他の回答 (1)

  • tommyt
  • ベストアンサー率50% (1/2)
回答No.1

問題の文字列が開示できないなら解決は難しいかと思いますが・・・ 単純なタブ区切りの文字列を分割するだけならば わざわざ正規表現を使うsplitを使うよりも、単純に文字列で 区切るexplodeを使った方がよいかと思います。 特にsplitにこだわる理由がなければ一度explodeで試してみてはいかがですか? 分割されない文字列が分かっているのですから、億劫がらずに 何度もテストと検証を行えば30分くらいで原因が分かるかと思いますよ。 回答になってませんが、がんばってください。

参考URL:
http://php.s3.to/man/function.explode.html
goroneko-begin
質問者

お礼

原因は文字コードでした。ただ、区切り方については非常に参考になりました。ありがとうございます。

関連するQ&A

  • splitを使ってスペース位置で文字列を区切りたい

    splitを使ってスペース位置で文字列を区切りたいのですが、 String[] word = str.split(" ",0);  //半角空白 のように書くと、全角スペースは区切りとしてみなされず、 String[] word = str.split(" ",0);  //全角空白 のように書くと、半角スペースは区切りとしてみなしてくれません。 全角スペースでも半角スペースでも、スペース位置で文字列を区切りたいのですが、どのように書けばよいのでしょうか?

    • ベストアンサー
    • Java
  • 任意の区切り文字でsplitする方法

    VBAで任意の区切り文字でsplitする方法を教えてください。 例えば 123 456 789 333 3444 66 65 22 といようなスペースあるいはタブで区切られたテキストデータがあるとします。 これを配列に格納したいのですが、 この区切りがタブ一つとか、スペース一つとか決まっていれば split関数で簡単に配列に格納することができますが、 タブかも知れないし、スペースがかも知れないし その数も未定の場合にはどうしたら良いですか? replace関数を使って、まず全てのタブをスペースに変換し その後に、複数のスペースを一つのスペースに変換し 最後にsplit関数を使うという方法しかないでしょうか? もっとスマートな方法があれば教えてください。

  • 文字列の分割について

    VB初心者です。 以下のように文字列を分割したいのですが <やりたいこと> MOJI="A","B","C,D,E" ↓ ARRAY(0)="A" ARRAY(1)="B" ARRAY(2)="C,D,E" ARRAY=SPLIT(MOJI,",") ではだめですよね。 何か、簡単なやり方はありますか? よろしくお願いします。

  • 全角空白での文字列分割について

    教えてください。 以下のような文字列で、全角空白をキーに2つに分割したいと考えています。 テストテキスト テストテストテスト スクリプトの文字コードはshiftJISで、分割対象の文字列もshiftJISです。 use encoding "shiftjis";  としてます。 ($t1,$t2) = split(/ /, $t); として試してみましたが、やはり無理でした。 何か良い方法がありましたら、教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • VBA split(文字列, ★) ★←複数デリミタ指定することできますか?

    VBAのsplit()関数ですが、 デリミタは1つしか指定できないのでしょうか? 例えば、 ------------------ 2005-5/23 19'02"40 ------------------ のような文字列を Perlの様に簡単に分割することは無理でしょうか? Array = split(文字列, /[ :\/\'\"-]/)

  • Excelの長い文字列をスペースで区切ってセルに?

    長い文字列が、スペースで区切られています。 このスペースを区切りにしてセルに分割する方法を教えてください。

  • 文字列操作

    テキストを読みこんで、そのテキストにある単語を抽出するプログラムを作ろうとしています。単語の区切り文字はスペースかタブで、1文字ずつ読みこんで行こうともいます。 しかし、1文字ずつ読みこむ関数fgetcは返値がint型のようです。1文字ずつよみこみながら読みこんだ文字がスペースかタブで無いか見たいのですが、fgetcのint型返り値をchar文字列と比較するにはどうしたら良いでしょうか。

  • splitでの文字列分割

    文字列中の「,」で分割をしたいのですが 「\,」では分割したくありません このような場合、どのような正規表現をかけばいいのでしょうか? <?php $str = "asd,fgh,qwge\,zxc"; $ary_ary = split("[^\],",$str); print_r($ary_ary); ?> ------結果------ Array ( [0] => as [1] => fg [2] => qwge\,zxc ) いろいろ考えてみましたが 上のようにうまくいきませんでした ご教示おねがいします

    • ベストアンサー
    • PHP
  • 数値を含む文字列の並び替えについて

    $xxxx[0]='なんとかかんとか'."\t".'なんとかかんとか'."\t".'12345'."\t".'なんとかかんとか'; $xxxx[1]='うんたらかんたら'."\t".'うんたらかんたら'."\t".'12346'."\t".'うんたらかんたら'; … のように、数値がタブ区切りで中間に入った文字列が幾つかあります。 この文字列を数値の部分で比較し並び替えることは可能でしょうか? 数値の位置は固定、3番目です。 よろしくお願いします。

    • 締切済み
    • PHP
  • 文字列からタブコードを取り除きたい

    お世話になります。 文字列からタブ文字をスペースに置き換えるにはどうすればよいでしょうか? strREC = Replace(strREC, ○, " ") と書いて、○のところに"\t"などをいれてみたのですが、うまくいきません。

専門家に質問してみよう