• ベストアンサー

php で特定の文字の行以降のデータを無視したいです。

php で特定の文字の行以降のデータを無視したいです。 $text = ' この文字列はテストといいます。 テストはどうですか? <a href="index.html">豆腐</a> というサイトがあります。 '; という、文字列から、 ”この文字列はテストといいます。 テストはどうですか? ” というデータを取得したいと考えています。 例ですと、「<a href="index.html">豆腐</a>」というデータ以前の データを取得したいと思っています。 恐らく、preg_match あたりで、できる…かもと思っていますが…。

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

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

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

基本的には#1さんのものでかまわないと思いますが細かいところだと (1)最初に改行が入っているそれもマッチさせた方がいい (2)最短マッチした方がいい 改行マークについては常に意識してやらないとはまりがちです <? $text = ' この文字列はテストといいます。 テストはどうですか? <a href="index.html">豆腐</a> <a href="index.html">豆腐</a> というサイトがあります。 '; $pattern="/(?:\n*)(.*?)\n<a href=\"index.html\">豆腐<\/a>/s"; preg_match($pattern, $text, $m); var_dump($m[1]); ?>

okwave2006
質問者

お礼

ありがとうございます!

その他の回答 (1)

  • mokokomi
  • ベストアンサー率71% (5/7)
回答No.1

<code> <?php $text = <<< EOS この文字列はテストといいます。 テストはどうですか? <a href="index.html">豆腐</a> というサイトがあります。 EOS; preg_match("/(.*)\n<a.*?>豆腐<\/a>/s", $text, $m); var_dump($m[1]); /* string(77) "この文字列はテストといいます。 テストはどうですか? " */ </code>

okwave2006
質問者

お礼

ありがとうございます! とても参考になり勉強になりました!

関連するQ&A

  • PHPで<a>タグ内からURLと文字を抜き出したい

    PHP4.3で $html_tag = '<a href="http://www.hogehoge.com/hogehoge/hoge/sample.html" class="hogehoge" title="hogehoge">りんく先名称</a>'; というような変数から 「http://www.hogehoge.com/hogehoge/hoge/sample.html」 のURLと 「りんく先名称」という<a>で囲まれた文字列を抜き出したいのです。 preg_matchを使っていろいろやってみたのですが、どうもうまくいきません。というか、正規表現がどのように書いていいのかわからないのですが・・・ そもそもpreg_matchを使わずとも簡単な方法があるのでしょうか? 大変恐れ入りますが、ご教授いただけませんでしょうか?

    • ベストアンサー
    • PHP
  • 下線(アンカー)の表示を特定の文字のみ設定するには

    特定の文字には下線を表示させ、特定の文字には下線を表示させないようにするには? <style type="text/css"> a { text-decoration: none; } </style> </head> <body> <a href="index.html">下線あり</a> <a href="index.html">下線なし</a> これだと、どちらも下線が付きません。 <a href="index.html">下線あり</a>は下線を付けるにはどうすればいいですか?

    • ベストアンサー
    • HTML
  • シート内の特定の列に入力されている文字を判別し、条件に合わない行を削除する

    シートの特定列(ここではG列)に入っている文字を判別して、不要な列を削除するマクロを考えています。 G列にはさまざまな文字が入っていますが、その中で"甲"、"乙"、"○"、"優"、"良"とある行だけを抽出して(G列に左記以外の文字が入っている行は削除して)クリップボードに取り込めれば成功です。 抜き出したくない文字はいろんなパターンがあり、「特定の文字を検索して該当行を削除」ということができません。 データはA1-K1までがヘッダ、A2以下が検索したい元のデータです。 少なくともA列はA2以下、表の終わりまでデータがぎっしり詰まっているので、表全体のサイズは取得できます。 そこで、取得したforでループを作ってみたのですがうまく動いてくれません。 マクロの技術としては基本中の基本のことのように思えますが、どこをどう組めばよいのでしょうか? 漠然とした質問で申し訳ありませんが、よろしくお願いします。

  • 特定の文字列が一致する行から、文字列を抽出する方法

    ファイルから、特定の文字列を検索し、その文字列に対応する文字列を取得したいのですが、どなたか方法を教えていただけないでしょうか? 処理: test.txt中に以下の文字列が記載されています。 ----- TEST011:FILE00 TEST01:FILE01 TEST02:FILE02 XTEST01:FILE01 XTEST02:FILE02 ----- test.txtから、TEST01に対応する文字列FILE01を取得したいです。 当初、strchrを利用すれば良いかと考えていたのですが、 TEST011の行が先に抽出されてしまい、うまくいきません。 どなたか解決方法を教えていただけないでしょうか。

  • 基礎で恐縮です。PHPで文字列を抽出

    PHP Version 5.2.14 です。 $foo = '/HUB.php/★'; という文字列があり、ここから、★の部分だけを取り出し、$bar に代入するにはどうすればいいのでしょうか? 例) $foo = '/HUB/a=dfnjgdbnnfjbkndzjnkbldjteznjhkbtkdkgld/g?h=1?g=2&q=5'; ならば、 $bar = 'a=dfnjgdbnnfjbkndzjnkbldjteznjhkbtkdkgld/g?h=1?g=2&q=5'; を取得したいです。 (★の中に「HUB」という文字列が出てくる可能性もあります) preg_match か preg_replaceを使えばよさそうだということはわかるのですがうまくいかず。。。 補足 すみません、上の例で、 $bar = 'a=dfnjgdbnnfjbkndzjnkbldjteznjhkbtkdkgld/g?h=1?g=2&q=5'; を取得したあと、 一番最初にでてくる「?」より左の文字列を、$hogeに、 一番最初にでてくる「?」より右の文字列を、$fugaに、 代入する方法もお教えいただけますでしょうか? 希望) $hoge = 'a=dfnjgdbnnfjbkndzjnkbldjteznjhkbtkdkgld/g'; $fuga = 'h=1?g=2&q=5'; よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • PHP正規表現の特定文字列を省く場合

    PHPを仕事で少し使用しております、Webデザイナーです。知識が少なく、正規表現での疑問がどうしても解決出来ずに困っております。限界を感じ質問させていただきました。どうぞよろしくお願いいたします。 PHPでURLにリンクを設定しております。文字列の中の「http」などで始まるURLにリンクを付けることは問題ないのですが、その中で「[nolink]http」といった特定の文字列が頭についているURLのみリンクを付けないようにしたいと考えております。ソースは以下の通りですが、上手くいきません。?!の個所を色々変えてみましたが、正しく認識されないorエラーが出てしまいます。 $body = preg_replace("/((?!\[nolink\])(https?|ftp)(:\/\/[A-Za-z0-9\+\$\;\?\.%,!#~\*\/:@&=_\-]+)/", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $body); そもそもの考え方が間違っているのか、中途半端な知識のため解決の糸口がつかめません。どうぞご教授頂けますようお願いいたします。

    • 締切済み
    • PHP
  • PHPの正規表現による文字列置換について

    下記のような文字列から「abcde」のみを変数に格納したいのですが、正規表現に苦戦しています。 http://example.com/detail.php?p=abcde.php 取得したい「abcde」のみが毎回変わり、その前後は固定です。 preg_replace()を使うのがいいのだろうなと思い、いろいろやってみているのですが、 なかなかマッチさせることができません。 どうかご教示頂けますでしょうか。

    • ベストアンサー
    • PHP
  • 特定文字列を含まない行を削除

    以前特定文字列を含む行を削除する方法の質問をし、正規表現を置換することでできることを知りました。^.*特定の文字列.*\n 今度は特定文字列を含まない行を削除を削除したいです。 この場合どう記述すればいいでしょうか? また、特定文字列1と特定文字列2のどちらかを含まない行を削除する方法もあわせて知りたいです。

  • htmlから特定の文字を取得するには

    VB2005初心者です webbrowserコントロールで表示させたwebページのソースの中にある 特定の文字を取得したいんですけど 例えば <a href="http://〇〇〇〇〇〇〇〇〇〇/〇〇/〇〇/△△△△△△△">△△△△△△△</a> <a href="http://〇〇〇〇〇〇〇〇〇〇/〇〇/〇〇/□□□□□□□">□□□□□□□</a> というhtmlの中から △の文字列と□の文字列だけテキストボックスに表示をさせたいのですが どうすればよいのでしょうか? △はTextBox1 □はTextBox2 の様な感じにしたいです 正規表現やInStr関数など試してみたのですがうまくいきません どなたかご教授お願いしたします ソースなど記述して頂けると助かります

  • エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法

    エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法 表題のとおりですが、エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法について教えてください。 特定の文字(C列にあります)が含まれている行から5行下の先ほどとは違う文字(これもC列にあります)までを削除したいのです。 それがたくさんあり大変困っております。 エクセルを起動してマクロの記録を行い手作業で5回削除し記録終了としたのですが、 5回以上削除したい場合は操作が行われませんでした。 これをマクロで行うにはどういう式を作ればいいでしょうか? 宜しくお願いします。

専門家に質問してみよう