0

関数を使用して HTML コードからいくつかのデータを解析していますpreg_match_all()。簡単にするために、正規表現ツールを使用してそれを行います。だから、私のパターンは次のようなものです:

<td class="(weekday|weekend) reservation (primary|alternate) fixwidth calday fixwidth " >(.*?)</td>

正規表現ツールで使用すると、結果が得られました。しかし、関数に入れたときpreg_match_all()、結果が得られませんでした。オンラインの PHP 関数テスター (functions-online.com/preg_match_all.html) で実行してみましたが、パターンはメッセージで null の結果を返しますunknown modifier 'w'

申し訳ありません..、これは私が preg_match_all 関数を呼び出す方法です:

preg_match_all('|<td class="(weekday|weekend) reservation (primary|alternate) fixwidth calday fixwidth " >(.*?)</td>|', $v, $matches3, PREG_PATTERN_ORDER);

結果が異なる理由は何ですか?preg_match_all()そのパターンを使用して結果を取得する方法は?

誰かが私を助けてくれることを願っています。前にありがとう。

4

2 に答える 2

3

preg_match_all('/<td class="(weekday|weekend) reservation (primary|alternate) fixwidth calday fixwidth " >(.*?)<\/td>/', $stringToSearch, $results)

まず、区切り記号を使用する必要があります。/正規表現をラップします。

第二に、/区切り文字として使用する場合は、指定された正規表現でそれが出現するたびにエスケープする必要があります。

于 2013-09-10T15:23:24.860 に答える