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

用戶名  找回密碼
 立即註冊
快捷導航
  • 我愛av論壇BBS
  • 手機A片
  • 自拍偷拍外流區
  • 貼圖區
  • 52av裸聊室
  • 中文-中國主播

     
查看: 3595|回復: 0
打印 上一主題 下一主題

[PHP] php中preg_match_all 用法

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2015-8-28 10:27:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


int preg_match_all ( string pattern, string subject, array matches [, int flags] )0 H( i5 u# C6 Z, W
, q5 ~' S4 t  C8 n3 R6 L

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

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

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


2 }! _) r  V( |1 wPREG_PATTERN_ORDER
對結果排序使 $matches[0] 為全部模式匹配的字串,$matches[1]為第一個括号中的子模式所匹配的字串,以此類推。
  1. <?php; y$ k& i- b6 g* G3 B: ~  P9 i
  2. preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",& ]7 N; g' y; j1 n
  3.     "<b>example: </b><div align=left>this is a test</div>",
    1 N6 o3 g' R0 `9 h/ `  h( k' L
  4.     $out, PREG_PATTERN_ORDER);7 c( z% k5 G& Z  c
  5. print $out[0][0].", ".$out[0][1]."\n";
    0 H, e5 m  g. _5 b0 E
  6. print $out[1][0].", ".$out[1][1]."\n";
    & [) l( t0 R7 k* A* Z0 p
  7. ?>
複製代碼
# l( B/ z' r: Y. J9 D
本例將输出:
  1. <b>example: </b>, <div align=left>this is a test</div>* ^2 }: F; o, s4 C0 g* ~( `7 l
  2. example: , this is a test
複製代碼
1 e) F6 o9 z: g2 t  M
因此,$out[0] 包含匹配整个模式的字串,$out[1] 包含一對HTML 標記之間的字串。

0 y# n- m- i; g7 N; x
% S. u% i  S8 I+ {( ?1 k2 `9 K4 z( S3 _! A: N
PREG_SET_ORDER
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。
  1. <?php
    % ], [4 c* |/ S) f7 W, v8 F. N. N
  2. preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    & d+ M" i" r: f1 g
  3.     "<b>example: </b><div align=left>this is a test</div>",% A& b/ }9 o/ m$ K5 b" ?9 T: ]$ B
  4.     $out, PREG_SET_ORDER);3 Q- Q3 f8 n# `# W
  5. print $out[0][0].", ".$out[0][1]."\n";
    1 I2 h6 V# M' `6 y- i8 W9 ?: d1 _- c
  6. print $out[1][0].", ".$out[1][1]."\n";- K* v6 E& {- m" T8 ?# U. Y5 f
  7. ?>
複製代碼
* z: R. d9 }1 w8 y
本例将输出:
  1. <b>example: </b>, example:# }; s9 n/ j# y
  2. <div align=left>this is a test</div>, this is a test1 w& {2 k8 F9 @% v6 X" D; R9 K
複製代碼

3 e( |7 \1 f8 {" p# j
本例中,$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等。
PREG_OFFSET_CAPTURE
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。
; X5 J. `! c" e3 R0 X" w. u

7 ?3 N. f$ I$ g4 ^8 u
如果没有给出标记,则假定为 PREG_PATTERN_ORDER。
返回整个模式匹配的次数(可能为零),如果出错返回 FALSE。

, P( Z3 g% ~) ~3 Q' O
例子 1. 从某文本中取得所有的电话号码
  1. <?php
    ' S$ u; o! n: q# d* h, m
  2. preg_match_all ("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
    ( s$ w( |) a. _4 x
  3.                 "Call 555-1212 or 1-800-555-1212 FREE", $phones);( J0 U: G$ h0 J6 `* }" _, y) p
  4. ?>
複製代碼
例子 2. 搜索匹配的 HTML 标记(greedy)
  1. <?php
    8 s8 x- P4 f2 u! Y# {2 O: N; a
  2. // \\2 是一个逆向引用的例子,其在 PCRE 中的含义是! ?/ F& d$ q5 K* c& D
  3. // 必须匹配正则表达式本身中第二组括号内的内容,本例中, [9 o( [- s$ C7 X8 A; i- s, H
  4. // 就是 ([\w]+)。因为字符串在双引号中,所以需要
    , V' H2 v+ a. R+ P7 D% O
  5. // 多加一个反斜线。' C8 v9 {3 G) m. _
  6. $html = "<b>bold text</b><a href=howdy.html>click me</a>";
    9 [0 E1 i9 f% {/ Z; u# N( L

  7. , Y7 m% W1 l3 [8 e4 q' m+ Y
  8. preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);
    4 Z4 T3 V9 a" `# w- i7 t( K# G
  9. & }# z+ u- S' e
  10. for ($i=0; $i< count($matches[0]); $i++) {
    ( w; A8 w& Y9 V( g# n8 `/ ^- ?+ b
  11.   echo "matched: ".$matches[0][$i]."\n";
    4 H$ B% R; C% l7 c# v
  12.   echo "part 1: ".$matches[1][$i]."\n";
    & y# U, T, y7 u$ n! X
  13.   echo "part 2: ".$matches[3][$i]."\n";8 c  \& p) O1 `) e5 y- B: w) ^7 L
  14.   echo "part 3: ".$matches[4][$i]."\n\n";/ N, T9 S) X! E
  15. }3 E4 p" s( ]2 i# u6 p8 F
  16. ?>
複製代碼
本例将输出:
  1. matched: <b>bold text</b>! e- G3 Z6 `3 r" E( X
  2. part 1: <b>
    & p  z5 V, S! w1 K( q5 G# |1 r
  3. part 2: bold text
    / u8 A' x' E; H# g
  4. part 3: </b>
    ' y4 T$ w( ~% D  L( C: l: Q

  5. : h* t# w! q7 h6 i
  6. matched: <a href=howdy.html>click me</a>& W* f) j- j5 s
  7. part 1: <a href=howdy.html>
    8 ]& V  @. |( A
  8. part 2: click me0 Q# B  Z7 Q$ O. T
  9. part 3: </a>
複製代碼

2 g' s4 u% J1 t0 H8 H' `9 I; r
( F3 D2 @) M- C( C+ {6 B( G8 e
回復

舉報

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

本版積分規則
















聚BT福利

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

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

GMT+8, 2025-2-20 01:04 , Processed in 0.061016 second(s), 16 queries .

連絡站長.廣告招商

52avtv@gmail.com | QQ:2405733034     since 2015-01

裸聊妹 快速回復 返回頂部 返回列表