0

同様の質問があることは承知しており、そのうちのいくつかを見てきましたが、その知識があっても自分の問題を解決できませんでした。誰かが私に問題を指摘していただければ幸いです。

function getCategories($source)
{
    $pattern = "<span class=\".*\" id=\".*\">.*<.span>.*<table class=\".*\".*>
<tr>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th><.tr>
(<tr id=\".*\">\n(.*\n){6}<.td><.tr>(<.table>)?\n)*";

    preg_match($pattern, $source, $categories);

    return $categories;
}

エラーメッセージで:

Warning: preg_match() [function.preg-match]: Unknown modifier '.' in /home/a1464157/public_html/functions.php on line 31

31行目は「preg_match(...)」です。

ツールでテストしたので、正規表現が機能するはずであり、正しい文字列が確実に渡されていますが、私の正規表現が気に入らないだけです。なぜか表情。すべてがエスケープされているか、または . に置き換えられていることを確認しようとしました。(/をエスケープするときの最後の手段は機能しませんでした)。

どんな援助でも大歓迎です!ありがとうございました!

〜アンドリュー

4

2 に答える 2

1

パターン文字列を区切り文字で開始および終了する必要があります。通常は/ですが、HTML に一致させるため、明日は使用しないものを選択してください。

于 2013-10-20T22:12:59.527 に答える
1

パターンの両端に区切り文字がないため、これが表示されます

$pattern = "<span class=\".*\" id=\".*\">.*<.span>.*<table class=\".*\".*>
            ^ opening delimiter            ^ closing delimiter followed by a modifier

/区切り文字として追加してみてください

$pattern = "/<span class=\".*\" id=\".*\">.*<.span>.*<table class=\".*\".*>
<tr>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th>
<th.*
<.th><.tr>
(<tr id=\".*\">\n(.*\n){6}<.td><.tr>(<.table>)?\n)*/";
于 2013-10-20T22:13:53.837 に答える