正規表現について教えてください。 - PHPプロ!Q&A掲示板

3588

  • 0P

正規表現について教えてください。

質問日時 / 2012年2月21日 09:27    回答数 / 3件

Questioner:  huront  このエントリーをはてなブックマークに追加 

キーワード / 正規表現   

<?php
$data=htmlspecialchars(file_get_contents('http://www.yahoo.co.jp/'));
$match="/<title>(.*?)<\/title>/i";
if (!preg_match_all($match, $data, $matches[0])) {  
throw new Exception('失敗'); 
}
print_r($matches[0]);
?>

タグの中身を取りたくて(上記ではtitleタグ)このように書いたのですが、失敗してしまいます。
どこが間違えているのかわかりません、どうすればいいのでしょうか。
よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01lieserl$dataの中身がどうなってるか確認してみた? htmlspe
 ┗A01-1huront $data=htmlspecialchars(file_get_contents('http:/
  ┗A01-1-1shimix>このようになります。htmlspecialcharsはない方が良

回答一覧

並び替え:

A01
answererlieserl [2月21日 12:57]

$dataの中身がどうなってるか確認してみた?
htmlspecialcharsが何のためにあって、何をするか理解してる?

$data=htmlspecialchars("<title>");
ってやったら、$dataの中身は"&lt;title&gt;"になっちゃうよ?

この意見に回答する

ツリーへ TOPへ

A01-1
replyerhuront [2月21日 18:47]


$data=htmlspecialchars(file_get_contents('http://www.yahoo.co.jp/'));
echo nl2br($data);
で表示すると、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、
など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。">
<title>Yahoo! JAPAN</title>

このようになります。htmlspecialcharsはない方が良いのでしょうか?
取っても失敗してしまいます。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [2月22日 09:16]

>このようになります。htmlspecialcharsはない方が良いのでしょうか?

ブラウザに表示すればたしかにそうなるでしょうけど、ブラウザ側で「ソース表示」で確認してみましたか?

htmlspecialcharsはブラウザに表示する直前に入れるべき処理であって、それ以外のタイミングで使うことはあり得ません。

>取っても失敗してしまいます。

こちらで試した限りでは(htmlspecialcharsを省略すれば)print_r($matches[0]);の結果は
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => <title>Yahoo! JAPAN</title>
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [0] => Yahoo! JAPAN
  11.         )
  12.  
  13. )
となります。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)