• ベストアンサー

文字列を取り出す方法

こんにちわ これからPhpを勉強してるのですが、 表題のとおり、文字列から任意の部分を取り出す方法をご教授下さい。 <h1>あかさたな</h1> <p><strong>たちつてと</strong></p> <p>さしすせそ</p> 上記文字列から<strong>で囲まれている部分の文字列を取り出すには どのようにすればよいでしょうか?

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.2です。 <strong>の含まれた1行だけで試していました。質問文の通りだと確かに抽出できませんでした。失礼いたしました。 下のように修正してみましたが、これでいけないでしょうか? $pattern = "/(.*<strong>)(.*)(<\/strong>.*)/s"; $replacement = "$2"; $strong_str = preg_replace($pattern, $replacement, $string);

その他の回答 (4)

  • takana_
  • ベストアンサー率44% (21/47)
回答No.5

No.4です preg_match_all("/<strong>(.*?)<\/strong>/", $string, $out); 抽出したい文字列は $out[1][n] n=1~マッチした数まで ではないでしょうか? ただし、マルチバイト文字列なので、 mb_ereg("/<strong>(.*?)<\/strong>/", $string, $out); かな? 自信なし ANo.4の補足 Hmjre.dllを使った場合です。

  • takana_
  • ベストアンサー率44% (21/47)
回答No.4

直接的には関係ないと思いますが、このサイトは多くの方が、 参照されていると思いますので、有益と思った内容を紹介します。 PHPで正規表現を試行錯誤するのは、結構面倒な作業ですが、 秀丸エディタv6.03の置換で、正規表現を使えば、結構正規表現のテストが楽に出来ます。 preg_replace($pattern, $replacement, $string); 秀丸エディタの置換コマンドの 検索文字列 = $pattern 置換文字列 = $replacement 編集中の文書 = $string に該当すると思います。 preg_match_all($pattern, $string, $out); 秀丸エディタの検索コマンドの 検索文字列 = $pattern 編集中の文書 = $string $out:検索文字列を強調した時に強調される文字列の配列 に該当すると思います。 正規表現についてのヘルプも、結構わかりやすいので、参考になります。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

$stringに文字列が入っていて、$strong_strに取り出すとして、 $pattern = "/(^.*<strong>)(.*)(<\/strong>.*$)/"; $replacement = "$2"; $strong_str = preg_replace($pattern, $replacement, $string); でいかがでしょうか。

mr59
質問者

お礼

回答ありがとう御座います。 動作確認してみましたが、抽出はされませんでした(汗

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

$aに文字列が入っているものとします。 $pos1=strpos($a,"<strong>")+8; $pos2=strrpos($a,"</strong>"); $ans=substr($a,$pos1,$pos2-$pos1); で、でないでしょうか?(未検証)

関連するQ&A