52AV手機A片王|52AV.ONE

 找回密碼
 立即註冊
快捷導航
  • 我愛av論壇BBS
  • 手機A片
  • 自拍偷拍外流區
  • 貼圖區
  • 52av裸聊室
  • 中文-中國主播
Yahoo!奇摩搜尋
熱搜: av4u論壇
Google搜尋
熱搜: av4u論壇
     
查看: 4273|回復: 0

[PHP] php中preg_match_all 用法

[複製鏈接]
發表於 2015-8-28 10:27:21 | 顯示全部樓層 |閱讀模式

int preg_match_all ( string pattern, string subject, array matches [, int flags] )1 V/ Z% I& T- f/ a/ q

5 \5 H, ?+ l; v' F; Z

在 subject 中搜索所有與pattern 给出的正規表示式匹配的内容並將结果以 flags 指定的順序放到 matches 中。

搜索到第一个匹配項之后,接下来的搜索從上一個匹配項末尾開始。

flags 可以是下列標記的組合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起來用没有意義):

5 A1 t3 K- \; F& g4 r' e
PREG_PATTERN_ORDER
對結果排序使 $matches[0] 為全部模式匹配的字串,$matches[1]為第一個括号中的子模式所匹配的字串,以此類推。
  1. <?php
    ! h2 |. m2 M" o. H) u- m
  2. preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    4 |9 K& i5 r) E0 c* j# \9 \3 \  U
  3.     "<b>example: </b><div align=left>this is a test</div>",
    0 R$ l& F8 _0 n5 ~" S6 Q
  4.     $out, PREG_PATTERN_ORDER);
    7 N6 M( L# |. X5 ]6 X! M* a
  5. print $out[0][0].", ".$out[0][1]."\n";$ a( R6 A" M; T! h: a6 U/ t
  6. print $out[1][0].", ".$out[1][1]."\n";
    ) F( R: b' G  C
  7. ?>
複製代碼

5 ?" b; W( t; ]; f, X  y1 H+ H本例將输出:
  1. <b>example: </b>, <div align=left>this is a test</div>
    : i; k! X7 M6 ]
  2. example: , this is a test
複製代碼
& l/ ]+ W$ ~( y# Z
因此,$out[0] 包含匹配整个模式的字串,$out[1] 包含一對HTML 標記之間的字串。

  }* I* U+ P$ W) n; y, M
* [6 ~' j/ z. c# v- `9 ]7 ?7 E9 q; V$ [7 U
PREG_SET_ORDER
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。
  1. <?php7 U+ _) E8 X( h  d. J
  2. preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    + N5 j, Y5 U1 w
  3.     "<b>example: </b><div align=left>this is a test</div>",
    4 x* R8 I6 s$ {% }  Q( V
  4.     $out, PREG_SET_ORDER);
    : |/ c. Z" j0 i! y
  5. print $out[0][0].", ".$out[0][1]."\n";9 S0 i% h" i2 x7 D8 K
  6. print $out[1][0].", ".$out[1][1]."\n";
    + R( h/ e7 Z8 |" `. V/ E# J5 _
  7. ?>
複製代碼
- v6 r& S2 b  t) x. e! O8 m
本例将输出:
  1. <b>example: </b>, example:( o7 q5 H  Z- Z* K
  2. <div align=left>this is a test</div>, this is a test! Y% h, w- H. [( E* k  n
複製代碼
1 G) H9 D9 j* S& U3 @& G! j! g
本例中,$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等。
PREG_OFFSET_CAPTURE
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。

# W) f- f* o/ z/ n7 W. A
4 k! m. s/ l' t. O
如果没有给出标记,则假定为 PREG_PATTERN_ORDER。
返回整个模式匹配的次数(可能为零),如果出错返回 FALSE。

5 X: ^0 e  r1 l- t
例子 1. 从某文本中取得所有的电话号码
  1. <?php  z% T/ T, K5 D* }4 y1 l
  2. preg_match_all ("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
    4 c- |0 s/ |. Q# L. M
  3.                 "Call 555-1212 or 1-800-555-1212 FREE", $phones);
    + G( W) U4 r6 W( E6 O' h
  4. ?>
複製代碼
例子 2. 搜索匹配的 HTML 标记(greedy)
  1. <?php
    9 J: B; K( V7 a9 c
  2. // \\2 是一个逆向引用的例子,其在 PCRE 中的含义是
    % L  J- i! s7 D
  3. // 必须匹配正则表达式本身中第二组括号内的内容,本例中
    , S2 M9 o' _, Z1 p: S1 \
  4. // 就是 ([\w]+)。因为字符串在双引号中,所以需要+ h9 b1 Y9 G! h# O
  5. // 多加一个反斜线。
    % w6 Q" f* g; g# _6 \( ~
  6. $html = "<b>bold text</b><a href=howdy.html>click me</a>";+ V- n2 I( V: W0 S; w

  7. % F+ a  [6 a9 t) z
  8. preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);& |6 n4 g- Q  H* B) }7 v

  9.   p- v: u; w1 y, u0 k- b8 d
  10. for ($i=0; $i< count($matches[0]); $i++) {6 f' u  k& K5 g; E
  11.   echo "matched: ".$matches[0][$i]."\n";
    . n8 J# f! `- h6 f8 b; @' M
  12.   echo "part 1: ".$matches[1][$i]."\n";  x4 ], Q, M% q
  13.   echo "part 2: ".$matches[3][$i]."\n";
    + p+ O; [' C6 ?9 G
  14.   echo "part 3: ".$matches[4][$i]."\n\n";
    9 v, W5 D: A* H1 l; I: S* L7 l
  15. }2 R, M/ D9 G2 A( y1 w1 D7 z
  16. ?>
複製代碼
本例将输出:
  1. matched: <b>bold text</b>
    # ]7 h& ^8 S* B- e' U
  2. part 1: <b>
    * I2 A! j9 G: {5 m2 b
  3. part 2: bold text
    7 U/ ^) Y9 |9 c* G7 ~& w; N3 v
  4. part 3: </b>& N' O, h6 _! u  c0 I2 |1 c2 Q

  5. ( U- p+ t3 |. U! u! x+ ]5 t0 y
  6. matched: <a href=howdy.html>click me</a>- L$ ^9 n( K6 ~4 I8 F8 i
  7. part 1: <a href=howdy.html>
    2 |7 u5 g( A* F4 C7 W8 @' b
  8. part 2: click me( a8 a6 r- Q" O0 e' Z3 z
  9. part 3: </a>
複製代碼

. ^* g9 k& N+ ]( ^" W3 \7 s7 g
# v( t" Q& _$ R; e0 n
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板|52AV手機A片王

GMT+8, 2026-5-2 05:18 , Processed in 0.007483 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

連絡站長.廣告招商

[email protected] | Telegram:@asa00061     since 2015-01

快速回復 返回頂部 返回列表