有個問題,怎麼把一個字符串中特定的字符串替換掉。舉例:把字符串:abc fdab ertDe fda Abc fdd 中abc替換掉,其中abc不區分大小寫,替換之後字符串為:fdab ertDe fda fdd
當時立馬想到兩種策略preg_replace正則替換,preg_split分割合並。哎哎,可當時沒有個手冊在手,總是沒有勇氣嘗試,這裡show下代碼吧,看來以後真要留心了。上代碼吧:
[php]
<?php
$str = 'abc fdab ertDe fda Abc fdd ';
$pat = '/abc/i';
$rtn = preg_replace($pat, '', $str, -1);
echo 'orig:', $str, '<br/>';
echo 'dest:', $rtn;
<?php
$str = 'abc fdab ertDe fda Abc fdd ';
$pat = '/abc/i';
$rtn = preg_replace($pat, '', $str, -1);
echo 'orig:', $str, '<br/>';
echo 'dest:', $rtn; 請點擊preg_replace 查看函數的用法。再showshowpreg_split吧:
[php]
<?php
$str = 'abc fdab ertDe fda Abc fdd ';
$pat = '/abc/i';
$arr = preg_split($pat, $str);
$rtn = implode('', $arr);
echo 'orig:', $str, '<br/>';
echo 'dest:', $rtn;
<?php
$str = 'abc fdab ertDe fda Abc fdd ';
$pat = '/abc/i';
$arr = preg_split($pat, $str);
$rtn = implode('', $arr);
echo 'orig:', $str, '<br/>';
echo 'dest:', $rtn;
呵呵,這種方式雖然很笨,但也是種方式啊,不過歸根結底還是正則的寫法。有沒有另外一種方式呢,幸虧手冊在手,功夫不負有心人,馬上有另外一種笨方法:
[plain]
<?php
$str = 'abc fdab ertDe fda Abc fdd ';
$tran = array('abc' => '', 'Abc' => '');
$rtn = strtr($str, $tran);
echo 'orig:', $str, '<br/>';
echo 'dest:', $rtn;
<?php
$str = 'abc fdab ertDe fda Abc fdd ';
$tran = array('abc' => '', 'Abc' => '');
$rtn = strtr($str, $tran);
echo 'orig:', $str, '<br/>';
echo 'dest:', $rtn;
這種方式有些取巧,主要使用strtr來規避正則,偏離了別人的目的,也不是種好方法!
這次,關於正則的問題是該好好反思,雖然正則學了很多,也寫了些。可總是用的時候看手冊,不停地重試重寫,不能了然於胸。心中對其有些怯意,以後應該多寫多練,真正做到熟悉這項基本技能。