2

正規表現を使用して (および) タグの間のすべてを取得しようとしています。私はこれに慣れていませんが、次のことを試しました

$html = file_get_contents($inputUrl);
preg_match_all('<td>([^"]*)</td>/', $html, $result);

foreach ($result as $val) {
    print $val."<br>";
}

私の正規表現の構文が間違っていると思います。次のエラーが表示されます。

警告: preg_match_all() [function.preg-match-all]: C:...\tester.php 行 5 の不明な修飾子 '('

警告: C:...\tester.php の 7 行目の foreach() に無効な引数が指定されました

ところで、このタスクには正規表現を使用する必要があります! したがって、「parse XML」などの使用に関する提案は必要ありません。

どんな助けでも大歓迎です

4

2 に答える 2

4

次の作業コードを使用します。

$mpmatch = "!<td>(.*?)</td>!is";
$str = "<td>sdfdfdfdsfds</td><td>333333333</td>";
preg_match_all($mpmatch, $str, $result);
foreach ($result as $val) {
    echo "<pre>";
    print_r($val);
}

これがあなたを助けることを願っています。

于 2013-09-25T09:01:39.537 に答える
2

最初の区切りを逃したため、エスケープする/か、別の区切りを使用する必要があります

   preg_match_all('/<td>([^"]*)<\/td>/', $html, $result);
                   ^----

または:

   preg_match_all('#<td>([^"]*)</td>#', $html, $result);

また、貪欲な一致を使用する必要があります。

   preg_match_all('#<td>(.*?)</td>#s', $html, $result);
于 2013-09-25T08:33:14.950 に答える