|
strtr() str_replace() substr_replace() preg_replace()
9 t/ A3 K/ @5 _$ t7 ^strtr()的用法: - <?php5 L% y5 a' t3 F7 p
- ! _+ G7 ^ a F5 P) {2 T
- $str = "test";
+ L$ G) ?) y2 \
; K* R, M+ ^; u# B- $str1 = strtr($str, 't', 'z'); // zesz4 `/ r$ x& e. T$ F
- $str2 = strtr($str, 'tt', 'z1');// 1es1
5 a/ G/ @+ W4 s* p6 N, V - $str3 = strtr($str, 't', '');// test7 f3 K/ j7 W) A; z: |7 H; o. s
- $str4 = strtr($str, 'ts', '12');// 1e21
2 y- q- }& o& Q# i& i/ i2 L% t - 7 t0 ^( A5 N: A+ i* S4 @
" r' z* p; E3 t( j: J$ Z) f- $str5 = strtr($str, array("t" => '')); // es
$ Y9 e$ j9 c F- F, X* Z6 c# A. d - $str6 = strtr($str, array("e" => 'www', "s" => "hhh"));// twwwhhht
复制代码 6 w; ]9 q2 r+ u2 s7 A' D5 |
有两种传递参数的格式,一种是数组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 . }2 _9 {: O+ v1 c. h
str_replace()的用法: mixed str_replace ( mixed $search , mixed $replace , mixed $subject) - <?php
^& K/ d2 }2 v) S! l3 s
: V6 U& p1 N4 m6 ]( r- $str = "test";
1 G. q/ D. B8 ], B6 ?2 e# m - ) I' L3 S( N& {7 P
- $str1 = str_replace('t', '', $str);// es
. [6 r' s$ w( I+ J/ e - $str2 = str_replace('es', 't', $str);// ttt
5 n9 `# V/ t; N9 y6 y% o# O2 I" Q7 K
( a, A' ~0 |, a2 K+ q' B0 M- $str3 = str_replace(array('t', 'sa'), array('a', 'b'), $str);// aeb) `( a5 h& o/ c
- $str4 = str_replace(array('t', 'sa'), array('a'), $str);// ae
$ S6 T/ O( ~8 f- H - $str5 = str_replace(array('t'), array('a', 'b'), $str);// aesa
2 D. z: J* a3 ]6 b0 O - $str6 = str_replace(array('t', 's'), 'e', $str);// eeee/ ]! d% n4 d) V- e# U9 I
- ^, B X6 u9 \# U/ Y0 E; e3 v
- $arr = array(& v5 P# _ I; ~9 q: ~0 T
- 'a' => 'testa',
" K- D+ H' u. U" L7 E - 'b' => 'testb',
% w5 ]/ ]- s* I# @0 b+ ] - 'c' => array() F& S- _1 C! y: ~0 T# J/ Z! L# V
- 'ca' => 'tes1',
" `$ o; X4 ]4 g j5 M. H/ l# R - 'cb' => 'tes2',
~8 h5 F- h' K9 i - ),) W; k: \+ c7 q4 E U% A/ }6 }
- );
. S& s. o$ e( D* m D Q3 P - ' R# o: B+ o8 K$ \& p Y: e
- $arr1 = str_replace('es', 't', $arr);
% d4 o( O1 L3 P, g - /**
/ ^; H8 c( C: \+ u$ S - $arr1 = array(
b _- N) B; N$ L# ^ - 'a' => 'ttta',
c' ~" [' R y1 l: b$ T - 'b' => 'tttb',5 J1 f% \% g- @1 C' R. {+ f
- 'c' => array(4 k/ W1 o) b" D- ]; f$ V
- 'ca' => 'tes1',
2 }% }/ ^6 I" [ - 'cb' => 'tes2',$ g; v4 m+ w, p& E* [
- ),
2 j! u& A1 {. b* e; L: E$ h8 ~ - );
. _, H3 N" }; W* z! ] - *
1 d9 P" }) k. k3 d* [3 z: C - *7 U- N& ?1 I( f: ~
- */
复制代码 , Y8 {: n4 u+ O8 ~
) n! B# P+ u+ A
& G& F# s: Y1 d* `" z7 v5 ^$ ~
str_replace()在使用上比较简单: 字符串上的使用,replace直接替换掉search,注意这里就不是字符对应,是俩参数字符串对应(区别于strtr()函数)。 数组上的使用(值得一提的是:前一个对应元素替换完得到的结果再应用到下一个对应元素【会发现第9行的sa被替换成空了,而sa是第一步替换完得到的子串】。): search和replace都是数组的时候:如果是两个数组元素个数相等,各个参数对应(如第8行)。如果search个数大于replace的话,多余的就被空字符串替换(如第9行)。 search是数组,replace是字符串的话,就是字符串中出现的数组各个值被被replace替换(如第11行)。 比较意外的用法:str_replace()可以处理数组的值,结果也返回数组。。这个就可以免去程序员手动循环数组了,经测试,只能对一维数组生效(如第22行)。
0 F9 h3 V" C$ T. O' l8 rsubstr_replace()用于替换字符串的子串。使用方法:是指定处理字符串的开始和长度,然后替换掉这段区间。也可以替换数组。。 mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) 举个例子: - <?php
' O* ~1 z. \# V+ ]* `! O - # d6 q' t% @1 L. l
- $str = "test";- V, k& ^" Y4 ^; O/ ?
- # X9 [; U- w% }
- echo substr_replace($str, 'zzz', 1, 2);// tzzzt
7 h+ ]& l1 |. C1 z6 E - 2 x- {, K$ W" u- F# \
- $arr = array(9 h. _) f; o, a& m
- 'a' => 'what',
" S2 K3 d9 D3 o% e - 'b' => 'are',' f" C3 c7 `* g P
- 'c' => array(6 [8 l( x& N) I% W# G
- 'ca' => '11',
* b6 s: W% `* C" a6 ?! O - 'cb' => '22',
9 M( i+ n# G. q - ),! z2 V8 E. A8 {- D; e" I1 o1 l- n
- );
/ g( p9 Q- U x9 p9 h - ! `# P9 {6 O0 a; u; O
- $arr1 = substr_replace($arr, 'ok', 0, 1);
% U: ~. y7 c/ P- A9 C& s5 N - /**
, F5 A! l+ _8 {6 r - $arr1 = array(
0 N$ R9 Z% X8 k& y( w - 'a' => 'okhat',
1 ^! w3 o3 _) E) b1 y9 t- a/ R6 T" f - 'b' => 'okre',
( {; ~' E: j" U! N; u' b! X - 'c' => 'okarry'9 U9 v% d2 a. b9 K' x9 G
- );
8 R3 s8 x9 r" r - */
2 C! R( C2 l( R7 n: y
复制代码
- Q/ z# b+ l, ]$ [% d( m: N% O数组替换的时候,也是处理一维数组的字符串值。。 - m L! o" Q- F$ j1 d* `
preg_replace()的用法 正则这个就尼玛太强大了,主要用于匹配特定格式的时候,否则推荐直接使用str_replace()函数。 这就举个稍微简单的例子,一段话中间夹杂着一个手机号码(简单匹配,就是以1开头的11位数字,前后不能是数字),想要在手机号码前边加上( mobile: )字样。 - <?php7 Y' X& T3 m6 y5 b" ~ E1 ^( s" \
1 j8 Z$ J$ Z. } [. ?% Y2 M- N- $arr = array(+ A( C+ E/ k& R. L
- 'a' => 'XXX25012349999XXX',// 不是以1开头
' |$ R, a5 @8 |* y; {# i - 'b' => 'XXX13188887777XXX',5 g( l, m9 {" X5 [
- 'c' => 'XXXX918811113333XXXXX',
) r* y5 f! D% ~ - 'd' => 'XXXX188111133331XXXXX',$ B% R- A0 s- A$ G! o" a) A
- );, _7 U8 T" ?4 b% W# }9 @: P; a
- " y. w2 \: F% O% `$ P2 B
- $re = preg_replace('/([^0-9])(1\d{10})([^0-9])/', '$1 mobile:$2 $3', $arr);// 利用$1,$3
. _) D T8 T0 ?3 p
% O# @5 y" `( b- $re1 = preg_replace('/(?<=[^0-9])(1\d{10})(?=[^0-9])/', ' mobile:$1 ', $arr);// 使用向前向后匹配,直接匹配的$1电话号
6 q8 B/ \ F2 R6 B9 z - * F% x- G* z1 N8 d( W
- /**
7 e( x9 y8 A S7 H& t$ O - Array: H) y3 U. Y/ a1 i: O+ |) x+ q
- (
& o! Z+ [+ _9 @* p; x0 l& ?2 D - [a] => XXX25012349999XXX4 M2 L* @1 `# \- d4 f
- [b] => XXX mobile:13188887777 XXX
1 M4 S; P; A! O2 J: w - [c] => XXXX918811113333XXXXX: i1 o7 N; B3 W
- [d] => XXXX188111133331XXXXX% g! x. E9 b) Y( V( x0 t' }. b
- )
, M3 h1 z" ?7 z/ Z0 N; L - **/
复制代码
$ a7 W' a A0 @# i9 O# H& ~; s) q
0 k; n, L7 u- K2 r% t! }( [* m0 e |