ホームページ  >  記事  >  バックエンド開発  >  PHPの規則性とデータ収集について詳しく解説

PHPの規則性とデータ収集について詳しく解説

小云云
小云云オリジナル
2018-03-21 16:23:592966ブラウズ
  • PHP 正規表現は主に、文字列のパターン分割、マッチング、検索、置換操作に使用されます。一部の単純な環境では正規表現の使用が効率的でない場合があるため、PHP 正規表現をより効果的に使用する方法を包括的に検討する必要があります。
    PHP 正規表現の定義:
    文字の配置とパターンの一致を記述するために使用される文法規則。
    PHP の正規関数:
    PHP には 2 セットの正規関数があり、それぞれ同様の機能があります:
    1 つのセットは PCRE (Perl 互換正規表現) ライブラリによって提供されます。プレフィックス「preg_」が付いた名前の関数
    POSIX (Portable Operating System Interface of Unix) 拡張機能によって提供される関数のセット。接頭辞 "ereg_" が付いた名前の関数を使用してください
    (POSIX の通常の関数ライブラリは PHP 5.3 以降使用が推奨されなくなり、PHP 6 から削除されます)
    POSIX の通常の関数は歴史的な段階で開始されようとしているため、 PCRE これは perl の形式に似ており、perl と php を切り替えるのに便利であるため、ここでは PCRE の規則性の使用に焦点を当てます。
    PCRE Regular Expression
    PCREはPerl Compare Regular Expressionの略で、Perl互換の正規表現という意味です。
    PCRE では、パターン式 (つまり、正規表現) は通常、「/apple/」のように 2 つのバックスラッシュ「/」で囲まれます。正規表現の重要な概念は、メタキャラクター、エスケープ、パターン単位 (繰り返し)、反意語、参照、アサーションです。これらの概念は、JavaScript で簡単に理解して習得できます。
    preg_filter — 正規表現の検索と置換
    preg_filter("normal", "replacement", "target");
    preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
    preg_match — 正規表現の実行式マッチング
    preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
    preg_match_all — グローバル正規表現マッチング
    preg_replace — 正規表現を実行します検索と置換
    preg_split — 正規表現による文字列の分割
    一般的に使用されるメタ文字 (メタ文字):
    メタ文字の説明
    A 文字列の先頭のアトムと一致します
    Z 文字列の末尾のアトムと一致します文字列 Atom
    b 単語の境界に一致します /bis/ 先頭が /isb/ である文字列に一致します 末尾が /bisb/ である文字列に一致します 区切り記号付き
    B 単語の境界を除く任意の文字に一致します /Bis/ 単語に一致します "
    d の "is" は数字に一致します。
    D は数字以外の文字に一致します。 9a-zA-Z_]
    W 英字、数字、アンダースコアを除く任意の文字と一致します。[^0-9a-zA-Z_]
    s と同等です。[ftv]
    S 空白文字を除く任意の文字と一致します。 ; [^ftv]
    f と同等 フォーム フィード文字と同等 x0c または cL
    と同等 改行文字と同等 x0a または cJ
    リターンと同等 car 記号は x0d または cM
    t と同等 タブ文字と同等x09 または cl
    v に相当 垂直タブ文字に相当します。 x0b または ck に相当します。この修飾子を使いこなすことで、遭遇する多くの問題を解決できることがよくあります。
    i - 大文字と小文字の両方に一致します
    M - 文字列を複数行として扱います
    S - 文字列を 1 行として扱い、改行を通常の文字として扱い、「.」は任意の文字と一致します
    X - 文字列内の空白pattern 無視します
    U - 最も近い文字列と一致します
    e - 置換された文字列を式として使用します
    形式: /apple/i は、大文字と小文字を区別せず、「apple」または「Apple」などと一致します。 /i

    文字に一致 説明
    次の文字を特殊文字、テキスト、後方参照、または 8 進エスケープ文字としてマークします。たとえば、「n」は文字「n」と一致します。 「n」は改行文字に一致します。シーケンス "\" は "" に一致し、"(" は "(" に一致します。
    ^ 入力文字列の先頭に一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は "n" または " の後の位置にも一致します。
    $ 入力文字列の末尾と一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は「n」または「r」の前の位置にも一致します。
    * 直前の文字または部分式と 0 回以上一致します。たとえば、zo* は「z」と「zoo」に一致します。 * {0,} に相当します。
    + 先行する文字または部分式と 1 回以上一致します。たとえば、「zo+」は「zo」と「zoo」に一致しますが、「z」には一致しません。 + {1,} と同等。
    ? 直前の文字または部分式と 0 回または 1 回一致します。たとえば、「do(es)?」は「do」または「does」の「do」と一致します。 ? {0,1} に相当します。
    {n} n は負ではない整数です。 n 回正確に一致します。たとえば、「o{2}」は「Bob」の「o」とは一致しませんが、「food」の両方の「o」には一致します。
    {n,} n は負ではない整数です。少なくとも n 回一致します。たとえば、「o{2,}」は「Bob」の「o」とは一致しませんが、「foooood」のすべての「o」と一致します。 「o{1,}」は「o+」と同等です。 「o{0,}」は「o*」と同等です。
    {n,m} M と n は非負の整数であり、n ? この文字が他の修飾子 (*、+、?、{n}、{n,}、{n,m}) の直後にある場合、一致パターンは「非貪欲」です。 「非貪欲」パターンは検索される可能な限り短い文字列に一致しますが、デフォルトの「貪欲」パターンは検索される可能な限り長い文字列に一致します。たとえば、文字列「oooo」では、「o+?」は 1 つの「o」のみに一致しますが、「o+」はすべての「o」に一致します。
    。「n」を除く任意の 1 文字と一致します。 「n」を含む任意の文字と一致するには、「[sS]」などのパターンを使用します。
    [] [] のいずれかに一致します
    [^] [] にないいずれかに一致します
    1. データ収集とは何ですか? 数年前、いくつかの大規模なポータルを除いて、それらは基本的に個人の Web サイトでした。情報が散在しており、内容はあまり多くありません。
    数年後には、商用ウェブサイトがますます増え、情報を大量に集中させる必要があり、たとえ大量のコピー編集者を雇うだけの資金力があったとしても、
    対応できない可能性があります。常に変化する情報リソース。
    情報収集は、すべての Web サイト運営者が好むテクノロジーになっています。
    2. データ収集の考え方:
    収集プログラムの考え方は非常にシンプルで、次のステップに大別できます:
    1. リモート ファイルのソース コードを取得します (file_get_contents または次のコマンドを使用します)。 fopen または fsocket を使用して、http プロトコルの get、php CURL 拡張機能、または PHP のその他のサードパーティのオープンソース カテゴリを実装します)
    注: File_get_Contents と FOPEN を使用しないことをお勧めします。使用できない問題が発生します。想像してみてください。FSOCKET を使用して HTTP プロトコルの GET を実装します。現在、ほとんどの Web サイトは収集防止テクノロジーを使用し、コンテンツを収集するときに情報抽出テクノロジーを使用しています。
    2. コードを分析して必要なものを取得します (ここでは通常のマッチングを使用します)。
    3. 取得したコンテンツを元にダウンロード、保管作業を行います。
    4. Web ページのレイアウトに従ってデータを表示します
    3. 個人的な収集体験を共有します:
    1. ホットリンクから保護されているサイトを使用しないでください。ただし、そのようなサイトの収集コストは次のとおりです。高すぎます
    2. できるだけ早く収集するサイトの場合は、ローカルで収集するのが最善です。収集する場合、最初にデータの一部をデータベースに保存してから、次のステップに進むことができます。といった加工が可能です。
    4. 収集時にエラーを処理する必要があります。収集が 3 回失敗した場合は通常はスキップします。
    以前は、コンテンツを選択するのに迷ってしまうことがよくありました。
    5. データベースに入る前に適切な判断をし、コンテンツの合法性を確認し、不要な文字列をフィルタリングする必要があります。
    4 番目: リンク アドレスを共有する: 正規表現オンライン テスト
    http://tool.chinaz.com/regex
    5 番目: よく使用される PHP 正規表現を共有する
    中国語の文字に一致する正規表現: [u4e00-u9fa5]
    Match Double -バイト文字 (漢字を含む): [^x00-xff]
    HTML タグに一致する正規表現: /<(.*)>.*|<(.*) / >/
    IP アドレスに一致する正規表現 /(d+).(d+).(d+).(d+)/g
    メールアドレスに一致する正規表現: w+([-+.]w+)*@w+ ([-.]w+)* .w+([-.]w+)*
    URL に一致する正規表現: http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?一致情報の画像リンク: /(s|S)(r|R)(c|C)*=*('|")?(w||/|. )+('|"| *|>) ?/
    正規表現を使用して URL アドレスからファイル名を抽出します: /(.*/)([^.]+).*/ig
    中国の電話番号検証/ ((d{3,4})|d{3 ,4}-)?d{7,8}(-d{3})*/
    中国郵便番号検証/d{6}/
    電子メール検証/ w+([-+.]w+)*@w+([ -.]w+)*.w+([-.]w+)*/
    ID カード認証/d{18}|d{15}/
    一般的に使用される数値の検証 /d{n}/ n は指定された長さです /d{n,m}/ 長さの範囲は n から m です
    不正な文字の検証
    次のような不正な文字と一致します。正規表現[ ^<>&/|']+
    日付検証
    一致する形式: 20030718,030718
    範囲: 1900--2099
    正規表現 ((((19){1}|(20){ 1}) d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}

関連推奨事項:

PHP Regular かどうかを決定します文字列内 漢字を含むメソッドの例

PHP 正規表現のまとめ

php 正規表現処理メソッド

以上がPHPの規則性とデータ収集について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。