|
strtr() str_replace() substr_replace() preg_replace()
7 f3 v4 @3 T- ?strtr()的用法: - <?php
, [4 U+ g* V- n/ H% [9 k4 V
; Q: ]; S% H& m# G3 x; f( ~+ M- $str = "test";$ S- p2 o" K' m
3 d$ k( p7 s+ L! g. v- ]- $str1 = strtr($str, 't', 'z'); // zesz, k7 d4 |- d6 ~& q# K7 _
- $str2 = strtr($str, 'tt', 'z1');// 1es1
4 {+ s8 C! _" w; R0 o/ c7 C" T - $str3 = strtr($str, 't', '');// test, Z0 W0 V: Q6 j/ }$ f
- $str4 = strtr($str, 'ts', '12');// 1e21
! V9 s c2 N! `6 \. Y
# }2 U2 Q$ p' o1 e- 5 {. y: { ?: ?# Z. T; P
- $str5 = strtr($str, array("t" => '')); // es
1 S/ u( ^: c/ W; \' q$ B5 f, b; j8 M - $str6 = strtr($str, array("e" => 'www', "s" => "hhh"));// twwwhhht
复制代码
/ o6 |2 c. u8 s* ?2 W 有两种传递参数的格式,一种是数组k=>v形式,一种是两个字符串的形式。 一,字符串情况 string strtr ( string $str , string $from , string $to ): search参数的每个字符和replace参数的字符对应(这个是该函数用法关键)。如果search中出现相同的字符,会按照search中最后一个字符对应的replace参数的字符代替(如第6行代码)。 如果search或者replace是空字符串,则不会被替换,原样输出(如第7行)。 二,数组k=>v情况 string strtr ( string $str , array $replace_pairs ): 这种情况比较简单,就是把字符串中的k替换成v 6 ~7 q2 t, j+ q6 l( s. G/ u
str_replace()的用法: mixed str_replace ( mixed $search , mixed $replace , mixed $subject) - <?php
/ | ]8 P7 V: d( p: a
0 Q% Z x; f! W% w& I x- $str = "test";
. m2 l) k0 j1 ]
$ `( g; F# \7 g5 v( p8 j- $str1 = str_replace('t', '', $str);// es+ Q$ x4 j, |; j* s" y$ u; ^5 ^, G
- $str2 = str_replace('es', 't', $str);// ttt0 r" U1 ~/ H: i
' ?% Y! \7 `' k4 n- $str3 = str_replace(array('t', 'sa'), array('a', 'b'), $str);// aeb
# }) ]8 R# R3 T8 E$ } - $str4 = str_replace(array('t', 'sa'), array('a'), $str);// ae1 q. x9 C! C5 g( S, \8 N
- $str5 = str_replace(array('t'), array('a', 'b'), $str);// aesa
6 k' ^ e5 e1 C5 @ - $str6 = str_replace(array('t', 's'), 'e', $str);// eeee8 O) Q1 e- w$ s4 e" N
+ K. K( ~) V8 _% v( v: `9 ?- $arr = array(
1 C3 [$ w2 [, Y# X& [" P4 F - 'a' => 'testa',
: |; G; [) a4 {6 ` - 'b' => 'testb',
$ P9 a! K2 X! s+ g+ r- d - 'c' => array(
. K6 q0 B' K0 s5 D - 'ca' => 'tes1',% ? m; K/ e5 B
- 'cb' => 'tes2', c* A c8 b4 h4 G) |* r
- ),8 a7 F5 S; T; p- b* D5 f6 ^
- );
$ g5 \, }1 |4 ]
1 d# O4 c9 c0 D0 z/ S- $arr1 = str_replace('es', 't', $arr);
0 l& u# b4 g2 _/ H7 w, z' [ - /**$ o1 y2 H b! A
- $arr1 = array(' ]" D$ b' o5 _. E# G+ i
- 'a' => 'ttta',- W6 v5 i6 F' |" G# w
- 'b' => 'tttb',
; G1 c$ q3 k+ ` - 'c' => array(" y# J; |; e& t8 {
- 'ca' => 'tes1',
) E# H6 x; Y8 u+ y - 'cb' => 'tes2',
v8 p9 k3 Z% _5 B7 _1 G( I( \ - ),( T- B$ O. A9 i' y
- );
( u2 T0 m( V- d7 L+ P - *
/ Z; n" N* g0 g' E - *# e7 V9 H/ L' n
- */
复制代码 9 B3 O) |! @3 S
) T3 n2 k2 y4 q3 d6 M8 N1 O
1 Z0 I `" ^1 n# l3 Cstr_replace()在使用上比较简单: 字符串上的使用,replace直接替换掉search,注意这里就不是字符对应,是俩参数字符串对应(区别于strtr()函数)。 数组上的使用(值得一提的是:前一个对应元素替换完得到的结果再应用到下一个对应元素【会发现第9行的sa被替换成空了,而sa是第一步替换完得到的子串】。): search和replace都是数组的时候:如果是两个数组元素个数相等,各个参数对应(如第8行)。如果search个数大于replace的话,多余的就被空字符串替换(如第9行)。 search是数组,replace是字符串的话,就是字符串中出现的数组各个值被被replace替换(如第11行)。 比较意外的用法:str_replace()可以处理数组的值,结果也返回数组。。这个就可以免去程序员手动循环数组了,经测试,只能对一维数组生效(如第22行)。 : F% x/ i& [* E5 [2 q* ~2 u1 b- H$ T) J
substr_replace()用于替换字符串的子串。使用方法:是指定处理字符串的开始和长度,然后替换掉这段区间。也可以替换数组。。 mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) 举个例子: - <?php
( x" m( G8 p0 S' z1 s
7 r# m: o5 v0 ^$ Y4 i9 f: I- $str = "test";# B4 \+ f9 u/ O( t5 _, C, K
- + G# ?. |- {3 w: p
- echo substr_replace($str, 'zzz', 1, 2);// tzzzt
- W6 h( }1 Q6 `- a" h - 0 ?# J+ }* _6 O7 \9 |5 P
- $arr = array(8 u" U: Y& K7 _) c F6 `& Z6 F3 F
- 'a' => 'what',
9 o: o; @8 T4 D% ` - 'b' => 'are',
$ w2 M( V8 {! i6 B2 R8 V - 'c' => array(
' c$ O6 j# w8 K* A2 i1 u& I - 'ca' => '11'," S8 c U( _3 D- j- Y4 A7 h+ k. h
- 'cb' => '22',
5 t8 V2 `5 g; [0 c# Z' G% @; L - ),+ y+ ]& W6 w& y# ` C. V
- );
" \! k+ X: E* V- ~7 q) V
' d$ K! a! z/ ]% t2 U- $arr1 = substr_replace($arr, 'ok', 0, 1);
& v& a5 d$ Q- P$ g( z7 T - /**
! L( G0 f. B8 `. Q - $arr1 = array(6 j, G* d1 V; L$ Z5 b
- 'a' => 'okhat',. d: p* a v4 M9 O) `) I
- 'b' => 'okre',3 E, g3 V3 | I
- 'c' => 'okarry'
. p6 L. [5 j3 p$ q+ ~; T D - );
0 E; {8 f% c6 D - */; {* C/ R& \1 z6 w1 g
复制代码
, D2 ^/ n+ _0 z8 z; `( `- e. @, ?数组替换的时候,也是处理一维数组的字符串值。。 1 K# N9 e+ Q; K2 |0 y: [. s
preg_replace()的用法 正则这个就尼玛太强大了,主要用于匹配特定格式的时候,否则推荐直接使用str_replace()函数。 这就举个稍微简单的例子,一段话中间夹杂着一个手机号码(简单匹配,就是以1开头的11位数字,前后不能是数字),想要在手机号码前边加上( mobile: )字样。 - <?php( L" Z w# p& i1 W1 A
- + z0 W' `( E9 p
- $arr = array(0 u; l6 z7 ^" c% ], u" r$ o
- 'a' => 'XXX25012349999XXX',// 不是以1开头
# s2 _* i1 I. g: u } - 'b' => 'XXX13188887777XXX',# P' @2 P% ~- x) _3 C" }( f" u+ ~4 r
- 'c' => 'XXXX918811113333XXXXX',6 x7 G- z1 |6 i6 s# V+ J. z/ Q1 j2 e
- 'd' => 'XXXX188111133331XXXXX',
7 P8 I4 y+ I3 P& k6 j, _ - );
. ?: S. E$ z0 D: n3 N' \ - # I+ Y% P3 b- a P- ^& \
- $re = preg_replace('/([^0-9])(1\d{10})([^0-9])/', '$1 mobile:$2 $3', $arr);// 利用$1,$3
- k' C1 y) ^; J* s& D4 M - ' t5 n( c7 \5 I% E, ?
- $re1 = preg_replace('/(?<=[^0-9])(1\d{10})(?=[^0-9])/', ' mobile:$1 ', $arr);// 使用向前向后匹配,直接匹配的$1电话号! z0 U7 J4 T) {0 y
- ( z5 e' L. @- Q) [! Y# j! z; p$ Y, U
- /**
) t# N$ M# u2 G/ M - Array4 W1 S) l' q* S
- (
' E1 o' t" r* `' J Y" r _ - [a] => XXX25012349999XXX
6 o" z7 |# Y ^' H& Y2 u2 k- F1 ^ - [b] => XXX mobile:13188887777 XXX& V H9 C8 I! ~! L
- [c] => XXXX918811113333XXXXX6 Z1 K9 A* M1 j4 b: R6 p1 P; F5 ^1 G
- [d] => XXXX188111133331XXXXX+ @ g2 F M7 f9 {
- )
/ g/ C! ?/ a( h4 v - **/
复制代码 . | y% S# J/ R
/ a5 z) K- L( |5 G! o* H |