ハードな質問(少なくとも私にとっては)誰かが私がすでに助けてくれたことを願っています。私はIMDBアクタページに正規表現を適用したPHP preg_match_all
$string = FetchPage($url);
$image_regex_src_url = '/<td id="img_primary"[^>]*'. 'src=[\"|\'](.*)[\"|\']/Ui';
$img_tag_array = $out[0];
$image_regex_src_url = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
preg_match_all($image_regex_src_url, $string, $out, PREG_PATTERN_ORDER);
$images_url_array = $out[1];
は、ここでは例として、ケビン・コスナーを取るIMDBサイトから俳優の画像を取得するには、このコードを持っている:私はオスカーの整数で勝った変数にフェッチするために私のコードを適応しようとしているhttp://www.imdb.com/name/nm0000126/
これまでのところ、「2オスカーを獲得しました。そしてラインから別の変数の彼の誕生日に「生まれ:ケビン・マイケル・コスナーリンウッド、カリフォルニア州、アメリカの 1955年1月18日」
このようなもので終わる:
$actor_oscars = 2;
$actor_birthdate = "January 18, 1955";
事は、あります私の正規表現の知識は非常に限られており、私はすでにこれを試行錯誤的に行い、完全に失敗しました!私を助けるためにそこに良い魂?
PS:私はここでコードをスタックオーバーフローに入れようとしましたが、かなり見えますが、それでも私は全く成功しないようです!
ありがとうございます!
preg_match('/<td[^>]*id="img_primary".+?<img[^>]*src="([^"]+)"/s', $str, $matches);
アカデミー賞ウォン:
preg_match('/Won\s(\d+)\sOscars\./', $str, $matches);
誕生月 - 日:
各するpreg_matchライン$試合後
これは適切なパーサーを使用する方が良いです(正規表現でHTMLを解析しないでください)。少なくともそのイメージのために。 ;-) – Qtax
これにDOMを使用すると、はるかに優れています。 http://php.net/manual/en/book.dom.php – NorthGuard
私はいつもやっていることを達成するより良い方法があると思っていましたが、私の知識は限られていると言っていました。私が理解している方法でしか動作しません。このため、私はちょうどこの1回だけデータを取得したいので、(もちろん)私はすでにこのメソッドに固執しなければならない作業を開始するコードを持っているためです。 :| –