• ベストアンサー

phpで日本語の文字列を抽出したいのですが、教えて

phpで下記のようなデータ  「あいう 平成25年6月12日 かきくけこ 平成25年6月12日 さしすせそ 住所 東京都あいうえお1番234-5 電話 23098098098」 上記のような文字列のデータを$dataの変数に入れているのですが、 この$dataから、日本語で「住所」の後から「電話」の前までのデータを抽出したいのですが、 抽出する方法がわかりましたら教えて頂けないでしょうか? 宜しくお願い致します。

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんな感じです。 ただし「住所」の後ろや「電話」の前にあるスペースも拾ってしまうので注意ください <?PHP $data="あいう 平成25年6月12日 かきくけこ 平成25年6月12日 さしすせそ 住所 東京都あいうえお1番234-5 電話 23098098098"; $pattern="/(?<=住所).+(?=電話)/"; if(preg_match($pattern,$data,$match)){ print $match[0]; }

ameosan
質問者

お礼

できました!ありがとうございます。

関連するQ&A

  • 指定文字列から指定文字列までの抽出

    EXCEL、Wordでも何でもいいのですが、 指定文字列から指定文字列までを抽出したいです。 そのほかを削除するという考えでも良いです。 ビジネス文書ではないですが、 例としてビジネス文書を使います。 例) ☆平成○年○月○日 ☆ ☆○○食品☆ 株式会社 営業部課長 ○岡 ○冶 様 ☆株式会社 □□企画☆ 取締役 □川 □子 本社移転のお知らせ  謹啓 向春の候 貴社におかれましては益々ご清栄のこととお慶び申し上げます。平素より格別のご愛顧を賜り、誠に有難うございます。 ☆ さて、この度弊社では業務拡張のため、平成◯年◯月◯日より下記住所に移転することとなりました。☆  これを機に、一層のサービス向上に努めるべく、社員一同気持ちをあらたにしております。  今後ともご愛顧のほど宜しくお願い申し上げます。 謹白 記   旧)  〒△△△ 東京都△△区△△町1-2-3         電話 △△△ FAX △△△   ☆新)  〒△△△ 東京都△△区△△町4-5-6         電話 △△△ FAX △△△☆   平成○年○月○日より、新社屋にて営業を開始いたします。 以上 のようなとき、 ☆と☆の間を抜き出したいのです。 上の文書だと、 平成○年○月○日 ○○食品 株式会社 □□企画 さて、この度弊社では業務拡張のため、平成◯年◯月◯日より下記住所に移転することとなりました。 新)  〒△△△ 東京都△△区△△町4-5-6         電話 △△△ FAX △△△ という形で抜き出せます。 マクロで自動登録をし、 1行ずつ削除していく方法も考えたのですが 必要な部分まで消してしまうことが多く、うまくいきませんでした。 逆の考えで、 ☆と☆の間以外を削除し、 空白のセルを消すというのでも構いません。 分かりにくい説明で申し訳ありませんが、 宜しくお願いいたします。

  • PHP 文字列抽出

    はじめまして。PHPプログラミングの初心者で恐縮ですが、 ご質問させてください。 現在、携帯用HPを作成してPHPによりMYSQLからデータを 表示させるプログラミングを組んでいます。 そこで、DB(MYSQL)からデータを引っ張ってくる際に、 そのデータが長い場合には、 頭から10バイトを抽出して末尾に「…」を追加して 表示させるプログラミングを作成したいと考えております。 ところが、そのデータに半角文字が含まれ最後の10バイト目が 全角の場合、文字化けをしてしまいます。 ------------------------------------------- 例) 〔データ〕  あいaうえおか(23バイト)       ↓(substrにより10バイトを抽出して末尾に…を追加)  あいaうえ●… ●部分が文字化けする ------------------------------------------- 文字列の「お」の部分を1バイトで抽出している為、 文字化けしてしまっていると思いますが、 うまく「お」まで表示するか、もしくは「お」を 表示し

    • 締切済み
    • PHP
  • PHP 文字列抽出

    はじめまして。PHPプログラミングの初心者で恐縮ですが、 ご質問させてください。 現在、携帯用HPを作成してPHPによりMYSQLからデータを 表示させるプログラミングを組んでいます。 そこで、DB(MYSQL)からデータを引っ張ってくる際に、 そのデータが長い場合には、 頭から10バイトを抽出して末尾に「…」を追加して 表示させるプログラミングを作成したいと考えております。 ところが、そのデータに半角文字が含まれ最後の10バイト目が 全角の場合、文字化けをしてしまいます。 ------------------------------------------- 例) 〔データ〕  あいaうえおか(23バイト)       ↓(substrにより10バイトを抽出して末尾に…を追加)  あいaうえ●… ●部分が文字化けする ------------------------------------------- 文字列の「お」の部分を1バイトで抽出している為、 文字化けしてしまっていると思いますが、 うまく「お」まで表示するか、もしくは「お」を 表示しないようにプログラミングをしたいのですが、 どのように組めばよいかわかりません。 非常に初歩的なご質問で恐縮ですがご教授頂けると ありがたく思います。 どうぞよろしくお願い致します。

    • 締切済み
    • PHP
  • 特定文字列の抽出

    VB6の質問です。 桁数、データが不定の文字列中から特定文字を抽出したいのでが、方法を教えていただけないでしょうか? 抽出したいデータの桁数が毎回不定でMid, Left, Right関数が使用できません。 Dim Buffer As String Buffer = "A12345...B678910.TRAGET..C" '桁数、データが不定の文字列がBufferに入ります。 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したのです。 InStr関数で、位置を特定して、Mid関数などで抽出するれば、良いと思うのですが これをどんな桁数のときも対応できるようにルーチン化にできないでしょうか?

  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • エクセルで文字列の抽出

    エクセルのデータの中から、「年.月付け」(例 2007.02付け)」という文字列を すべて抽出したいのですが、「****.**付け」で関数で式を作成しても エラーメッセージがでて、うまく抽出できません。 (関数がまちがってるのかもしれませんが。。。) どのようにしたら、抽出できるのでしょうか? ご教示のほどよろしくお願いいたします。

  • エクセル 重複した文字列がある場合の抽出

    お知恵を拝借願えれば幸いです。 先日こちらで、似たような質問をさせて頂き、それは解決したのですが 新たな問題があり質問をさせて頂きます。 A列       B列         C列 東京都    中央区    中央区○×小学校 東京都    中央区    中央区立○○小学校 東京都    中央区    中央区○○小学校 先日は上記のデータのうち、「中央区立○○小学校」、「中央区○○小学校」(及び 「○○小学校」)を同じデータとして抽出していくということについて 伺いましたが、さらに以下のようなデータも同じデータとして抽出する方法について 悩んでおります。 列       B列         C列 東京都    中央区    中央区○○小学校 東京都    中央区    中央区立○○小学校 東京都    中央区    ○○小学校(▲▲) 東京都    中央区    ○○小学校 ▲▲ ▲▲は別名が併記されているといったイメージです。 もしよろしければご助言頂ければ幸いです。 よろしくお願い致します。

  • phpとmysqlで抽出

    Mysqlに下記のようにデータがあります。 そこで、このデーター(日付)を 2013年1月1日(2件) 2013年1月2日(1件) 2013年1月3日(1件) 2013年1月5日(2件) のように抽出、集計したいです。 いろいろ考えましたが、ピンときませんorz どうすれば宜しいですか? お願いします。 Mysqlのデータ +--+---+ |ID |Dat| +--+--+ |1 | 20130101| +--+--+ |2 | 20130101| +--+--+ |3 | 20130102| +--+--+ |4 | 20130103| +--+--+ |5 | 20130105| +--+--+ |6 | 20130105| +--+--+

    • ベストアンサー
    • PHP
  • エクセル2000で文字列から数値を抽出したい。

    エクセル2000で文字列から数値を抽出したい。 ワークシートのA列に下記の文字列が入力されています。 A1セル="123456 日本男子 54,321 7,654,321 12,345" A2セル="234567 東京都子 1,234 2,345 5,321" A3セル="345678 大阪太郎 99 689 9,876" データ間はスペースで区切られています。 後方2番目の数値をB列に取出す方法を教えて下さい。 B1セル=7,654,321 B2セル=2,345 B3セル=689 よろしくお願い致します。

  • エクセルデータ抽出(日付)

    はじめまして、エクセルの関数とか殆ど分かりません。 そこで、以下内容の事をしたいのですが、どうすれば良いでしょうか? 前提 日付を入力した「元データ」があります。下記(1)~(3)を対応して「抽出データ」を作成したいです。 元データ 抽出データ 番号 日付 金額 番号 日付 金額 1 平成23年9月18日 \60,000 1 平成23年9月18日 \60,000 2 平成23年11月2日 \70,000 3 平成23年10月15日 \90,000 3 平成23年10月15日 \90,000 4 平成23年10月13日 \150,000 4 平成23年10月13日 \150,000 ⇒ 5 平成23年11月29日 \200,000 6 平成23年11月1日 \80,000              合計 \300,000   (1)今日より3ヶ月以内(月末〆)のデータのみ抽出する。 (2)抽出データの金額を計算する。 (3)抽出データを別のシートに作成する。 (1)~(3)を実行する方法を教えて下さい。