こんにちは。2回目の回答になります。
タブや改行を無視する方法はありませんでしょうか?
との追記があったので、これについて回答したいと思いますが、
ご質問のタイトル「タグの中身を正規表現で取得したい」からは
ちょっと離れますので、その点だけご容赦ください。
HTMLの中にタブや改行がどのように入ってきても、あるクラスを持った
要素の中にあるテキストを取り出せるプログラムを作るには、自分で
正規表現を書くという方法ではつらくなってきます。なぜかというと、
HTMLの要素の区切りにタブや改行がどのようなパターンで入ってくる
かは、無数の組み合わせがあるからです。
目的の要素からテキストを取り出すのに、自分で正規表現を書くのとは
別の選択肢として、HTMLをパース(解析)し、取り出したい要素を指定
して、それらの要素の持つテキストを集めてくるようなプログラムを
書く方法があります。そのようなプログラムを作るには、HTMLパーサー
を使うのですが、PHPのHTMLパーサーとしては、
PHP Simple HTML DOM Parser
というのが、よく知られています。(他にも、より性能が良いものがある
らしいのですが、それについてはここでは触れません。)これを使うと、
クラスに item を持っている要素のテキストを、(WEBブラウザ上に)一覧
するプログラム
・list-item-contents.php
は、たとえば以下のように書けます。
lang
1<?php
2 require_once 'simple_html_dom.php';
3
4 $html = file_get_html( 'input.html' );
5?>
6<!DOCTYPE html>
7<html>
8<head>
9<meta charset="UTF-8">
10<title>list-item-contents.php</title>
11</head>
12<body>
13<pre>
14<?php foreach ( $html->find( '.item') as $item ) {
15 $text = trim($item->innertext);
16 echo $text . "\n";
17} ?>
18</pre>
19</body>
20</html>
21<?php
22 $html->clear();
23 unset($html);
24?>
上記の list-item-contents.php では、初めに
lang
1 require_once 'simple_html_dom.php';
としていますが、この simple_html_dom.php は以下
http://sourceforge.net/projects/simplehtmldom/files/
からダウンロードして入手します。
また、処理の対象として読み込むHTMLファイル名を
・input.html
としています。たとえば input.html として
lang
1<!DOCTYPE html>
2<html>
3<head>
4<meta charset="UTF-8">
5<title>questions/9375/input.html</title>
6</head>
7<body>
8<div class="item">
9 あ
10</div>
11
12<p class="item">い</p>
13
14<p class="item special">
15 う</p>
16
17<div class="teratail item special">え
18</div>
19
20<div>
21お
22</div>
23</body>
24</html>
を、先の list-item-contents.php に処理させると、結果として
と、ブラウザ上に表示されます。
input.html の要素の区切りとしてタブや改行が、どのように入っても
list-item-contents.phpを修正することなく、同じ結果が得られる
はずです。
以上、HTMLから欲しい情報を取り出すときに、自分で正規表現を書く手法
とは別の方法となりますが、参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。