1

この記号 .* は何ですか? phpで意味します。サンプルコードは次のとおりです。

    function parse($html) {
    //echo "Find table(id=weekdays)..\n";
    $pattern = "/(<table.*?id=\"weekdays\".*)/ims";
    //$pattern = "/(<div.*?id=\"flexBox_flex_calendar_mainCal\".*)/ims";
    //echo $pattern."\n";
    $match = array();
    //$html = str_replace("\r", "", $html);
    //$html = str_replace("\n", "", $html);
    if (preg_match($pattern, $html, $match) > 0) {
        //print_r($match);
        //echo $match[1];
        //echo count($match);
        $this->parseTable($match[1]);
    } else {
        echo "Error: no match calendar data(table id=weekdays) found, maybe fx.com change its site html'!\n";
    }
}

別の/外部Webサイトからテーブル値を抽出し、それを解析してデータベースに挿入する機能を持つWebサイトを維持しています..

$pattern の値を変更する必要がありますが、その記号が何を意味するのかわからなかったので変更できません..

助けてくれてどうもありがとう..

4

3 に答える 3

4

これは正規表現と呼ばれます。詳細については、http://www.regular-expressions.info/を参照してください。

/.*?/ims「もしあれば、任意の文字に一致する(欲張りでない)」を意味します。

于 2012-12-13T06:37:46.763 に答える
3

これは、正規表現のワイルドカード文字です。

(<table.*?id=\"weekdays\".*)

/./s 任意の文字を意味します

*0回以上を意味します

つまり/.*/s、「任意の文字に0回以上一致する」という意味です。

ストリング :hello , now this is some garbage , world. And this is a long sentence which ends in world

hello.*worldこのWHOLE文字列と一致します。

例を参照してください:http://regexr.com?334em

また/.*?/s、「任意の文字に0回以上一致しますが、貪欲でない一致、つまり最も早い一致が返されます(ここでは長さがゼロの文字列)」を意味します。

/hello.*?world/shello , now this is some garbage , world最小の貪欲でない一致であるため、のみ一致します。

違いのある同じ例を参照してください:http: //regexr.com?334ep

imsフラグimあり、s

ここでそれらについて読むことができます:PHP:正規表現パターンで可能な修飾子ドキュメント

于 2012-12-13T06:41:04.983 に答える
1

http://weblogtoolscollection.com/regex/regex.php

http://webcheatsheet.com/php/regular_expressions.php

これらはあなたに役立つかもしれません

于 2012-12-13T09:09:48.890 に答える