PHP:preg_match_allで複数条件指定
preg_match_allで複数条件を設定する方法についてお尋ねします。
環境
PHP:5.1.6
MySQL:5.0.77
--------ソース例------------------------------------------
<a href="1000/23">1: 【国語】接続後について (授業1) (20)</a>
<a href="1000/26">2: 【数学】分数 (206)</a>
---------------------------------------------------------
上記のようなHTMLソースを分解してMySQLに登録することを考えています。
(1行目)
1000/23 | 1 | 【国語】接続後について (授業1) | 20
(2行目)
1000/26 | 2 | 【数学】分数 | 206
という形に
a hrefの中身 |スレッド番号 | タイトル | コメント数
4つに分解してMySQLに登録します。
正規表現を学んで、個別にデータを取り出すことはできました。
以下に作成したソースを記載します。
$contents='<a href="1000/23">1: 【国語】接続後について (授業1) (20)</a><a href="1000/26">2: 【数学】分数 (206)</a>';
preg_match_all( '/<a href="(.*?)">/su', $contents, $match );
foreach ( $match[ 1 ] as $var )
{
echo htmlspecialchars($var)."<br>";
}
preg_match_all( '/">([0-9]*?):/su', $contents, $match2 );
foreach ( $match2[ 1 ] as $var2 )
{
echo htmlspecialchars($var2)."■<br>";
}
preg_match_all( '/[0-9]: (.*?)\([0-9]*\)<\/a>/su', $contents, $match3 );
foreach ( $match3[ 1 ] as $var3 )
{
echo htmlspecialchars($var3)."■<br>";
}
preg_match_all( '/\(([0-9]*?)\)</su', $contents, $match4 );
foreach ( $match4[ 1 ] as $var4 )
{
echo htmlspecialchars($var4)."●<br>";
}
【実行結果】
1000/23
1000/26
1
2
【国語】接続後について (授業1)
【数学】分数
20
206
1行ずつMySQLに登録したいので
preg_match_all( '/条件1,条件2,条件3,条件4/su', $contents, $match );
のような形で指定して個々の値を下記の変数に入れることは可能でしょうか?
ループ処理開始{
$url $num $title $res
//MySQLに接続
//データ登録
}
お礼
ありがとうございます解決しました。 a href = javascript:なんてのも入っちゃいますけど。 がんばってしまいますが、あとは頑張ります。