• 締切済み

mysqlからの検索結果文字列を範囲指定で抽出

mysqlからphpで呼び出し、検索結果を全文表示させていますが、検索文字の±何文字を抽出と範囲指定できるのでしょうか? 例 "今日"で検索 現在は "昨日は雨でした。今日は晴れです。" と全文呼び出し 理想は "・・・した。今日は晴れ・・・" 検索文字の±3文字を呼び出すことです。

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

みんなの回答

  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.2

(1)は、パターンを下のように変更してみてください。 他の条件や半角文字などが入っているとこのパターンに 当てはめるとおかしくなります。 perl正規表現について検索でたくさんヒットするので調べてみてください。 $patturn= "/.{0,6}".$key.".{0,6}/"; (2)は、一度変数に代入してからpreg_matchを咬ませてから連結する といった流れではどうでしょう? if($rows){ while($row = mysql_fetch_array($result)) { extract($row); preg_match ($patturn,$text2,$matches); $temp.= $No."<BR>".$text1."<BR>".$matches[0]."<BR>";    } }

参考URL:
http://www.rfs.jp/sb/perl/02/09.html
shin-7777
質問者

お礼

if($rows){ while($row = mysql_fetch_array($result)) { $temp .= $row["No"]."<BR>"; $temp .= $row["text1"]."<BR>"; $temp .= preg_match ($patturn,$row["text2"],$matches); $temp .= $matches[0]    } } と連結の中にpreg_matchを入れることで目的のことが達成できました。まだ文字化けしますがperl正規表現については何とか自力で勉強します。ほんとうにありがとうございました。

  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.1

正規表現を使って表示させる際に 正規表現で変換するというのはどうでしょうか? <?php $str = "昨日は雨でした。今日は晴れです。"; $key = "今日"; $patturn= "/.{6}".$key.".{6}/"; //パターンは一例です preg_match ($patturn,$str,$matches); var_dump($matches[0]); echo $matches[0]; ?>

shin-7777
質問者

お礼

無事解決しました。ありがとうございます。正規表現はほとんど学んでいないので、今後がんばります。

shin-7777
質問者

補足

すいません。出来たと思ったのですが応用が出来ませんでした。 (1)検索文字が文頭、文末の場合はエラーとなってしまう。 (2)ループでmysqlから取り出す場合には? if($rows){ while($row = mysql_fetch_array($result)) { $temp .= $row["No"]."<BR>"; $temp .= $row["text1"]."<BR>";    $temp .= $row["text2"]."<BR>";    } } と取り出す場合、text2だけに文字カット処理を行いたいのですがどのようにすればよいのでしょうか?ど素人で申し訳ありません。

関連するQ&A

  • 指定した文字のみ 文字コードを変換したいウィウィ~

    PHPファイルへMYSQLより抽出をしています。 PHPファイルへMYSQLから抽出を行っておりましたが表示結果が出なく困っておりました。 そこで、PHPファイル自体をEUCにしたところ、抽出結果がきちんと表示されました。 しかし!しかし! 抽出した結果以外の文字が化けてしまいました。 そこで指定した文字のみを変換することは出来ますか>? WHERE k_name = '音楽' この「音楽」のみをEUcにしたいと思っております。 mb_convrt もやりましたがダメでしたね。。。

  • LIKE検索で範囲指定の方法

    mysql 4.0で、文字列中に日付を埋め込んでいて、LIKE検索でこの日付の範囲指定で結果を取得したいのですが、このようなことは出来るのでしょうか。

    • ベストアンサー
    • MySQL
  • 複数文字列から共通文字列の抽出処置

    お世話になっています。 標題の件に付いて教えて頂きたく質問板に投稿させて頂きました。 以下の様な複数の文字列があり各文字列で共通の文字列のみを抽出するといった処理を行いたいのですが可能でしょうか?? 例(1) 赤鉛筆を11/1に購入 青鉛筆を11/5に購入 黄鉛筆を11/20に購入 →鉛筆を購入 例(2) 今日の天気は晴れです 今日の天気は曇りです 今日の天気は雨です →今日の天気はです という様な感じです。 文字列には決まったパターン等はありません。 申し訳ありませんがご教授下さい。 よろしくお願い致します。

  • エクセルで全範囲から指定の文字列を含む行を抽出する方法

    タイトルの通りなのですが エクセルで全範囲から指定の文字列を含む行を抽出する方法はないのでしょうか? フィルタは列ごとになっていますが列ごとではなく全範囲から抽出したいと思ってます。宜しくお願いしますm(_ _)m

  • mysqlの検索結果からある範囲の行数を取り出すには

    mysqlの検索結果からある範囲の行数を取り出すにはどうすればいいのでしょうか?たとえば検索結果から100~200行の間の行数を取り出すには、   ・   ・ $count=1; $result=mysql_query($sql); $rows=mysql_num_rows($result); while ($row=mysql_fetch_array($result)) { ・・・・ if( $count <= 99 ){ $count++; continue;} として99行目まで読み飛ばす処理をする以外に方法がありますか。 もっと効率よく取り出す方法があったら教えてください。

    • ベストアンサー
    • PHP
  • 指定の範囲内のセルを検索・抽出する。

    エクセルで指定した範囲内にあるデータを検索(もしくは抽出)するにはどうすればよいのでしょうか。 検索で一つ一つデータを入力して検索するのは非常に手間がかかるので、 範囲をドラッグで選択してその選択内のデータをシート内で調べるにはどうすればいいのでしょうか? マクロや複雑な関数は苦手なので、できれば簡単なものをお願いします。

  • PHP 文字列抽出

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

    • 締切済み
    • PHP
  • PHP+MySQLの結果を印刷したい

    PHPで抽出したMySQLの検索結果をレイアウトを厳密に設定して印刷したいのですが、どのような方法が考えられますか?わかる方いたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • MS IndexServerの検索結果について

    IndexServerをテスト構築してファイルサーバを検索しているんですが、検索結果にどうも納得いかないというか、わからない部分があります。例えば以下のように 今日は晴れ・・・・A 今日は雨・・・・・B 昨日は晴れ・・・・C という文章が入った3つ(A,B,C)のファイルを検索します 1.“今日は晴れ”というキーワードで検索した場合 検索結果A,B,Cすべて。 2.“今日”というキーワードで検索した場合 検索結果A,Bの2件 3.“晴れ”というキーワードで検索した場合 検索結果A,Cの2件 4.“晴”というキーワードで検索した場合 検索結果0件 という結果になりました。 2と3の結果は納得いきます。でも1.は“今日”と“晴れ”のOR検索をしていますよね。それと、4.に関しては通常ならA,Cが引っ掛るべきじゃないでしょうか?これを説明できる方、いらっしゃいますか?どんなことでも結構なんで意見ください。

  • mysqlで検索結果にupdateをしたい

    mysqlで検索した結果に対して 同一テーブルの他のカラムに共通の文字列を書き込みたいです。 たとえば、 SQLで検索した結果に対して、対象レコードの「price」の項目に 「300」の文字列を登録するイメージです。 例: 元のレコード name    price りんご みかん なし 「ん」で対象レコードを検索した結果イメージ: name    price りんご みかん このとき、「ん」に該当する「price」のカラムに 「300」と値段を登録したいです。 理想の処理結果のイメージ: name     price りんご 300 みかん 300 お手数ですが、アドバイスよろしくお願いします。

専門家に質問してみよう