2012-03-12 15 views
0

奇妙な問題...正規表現が一致しませんか?問題をエンコードしますか?

私はテキストをコピーしてスクリプト内(文字列変数として)に置くと、正規表現が正常にマッチします。しかし、私がfile_get_contentsを使って(インターネットから)文書にアクセスすると、それはしません。

これはエンコーディングとは何かを持っていますか?文書がISO-8859-1であるが、これはエンコードされた出力をUTF8から文字列変数が作成されていることを

ノートはutf8_encodeを経由してUTF8に変換します。

それはあまりにも簡単な正規表現です:

if (preg_match_all('/<h3 align=center><A NAME="([^"]*)"><\/A>(.*)<\/h3>(.*)::break::/isUu', $contents, $matches, PREG_SET_ORDER)) { 

間違っている可能性がどのような任意のアイデア?

+1

どんな違いがあるかどうかを確認するために、その後、その後のfile_get_contentsからコンテンツをコピー/ペースト変数ののvar_dumpを行います。 – anubhava

+0

browser/wgetでファイルを開き、そのエンコーディングを見ます。たぶん、それはUTF-8' 'で返されていますが、のISO-Latin-1 ''で手動で保存します – kirilloid

答えて

0

これは、エンコーディングによるものではなかったが、backtrack_limitによるが到達しています。以下と設定の上書き

ini_set('pcre.backtrack_limit', '1000000'); 

(100,000〜アップは)問題が修正されます。 PHP 5.3。?この値もあるので、本当に大きな数字ではありません。

関連する問題