实例代码
$string=' 键名 数组可以同时含有integer和 string 类型的键名,12345678 因为 PHP 实际并不区分索引数组和关联数组。如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。'; $keyArray=array('数组','integer','2345','键名');$replacement=array( '0'=>array( '0'=>"键名", '1'=>"http://www.baidu.com", '2'=>'2' ), '1'=>array( '0'=>"数组可以", '1'=>"http://www.baidu.com", '2'=>'2' ), '2'=>array( '0'=>"数组", '1'=>"http://www.baidu.com", '2'=>'1' ) ); //可以实现替换次数的控制,不仅限于只替换一次,比如$limit为2的时候表示一个词出现很多吃的时候仅替换2次,//-1表示全部替换。$search 和 $replace 都可以是字符串或者数组,但必须对应 function str_replace_limit($search,$replace,$content,$limit=-1){ if(is_array($search)){ foreach ($search as $k=>$v){ $search[$k]='`'.preg_quote($search[$k],'`').'`'; } }else{ $search='`'.preg_quote($search,'`').'`'; } $content=preg_replace("/alt=([^ >]+)/is",'',$content); return preg_replace($search,$replace,$content,$limit); } function keylinks($string,$replacement){ for($i=0;$i<count($replacement);$i++){ $replacement[$i][1]="<a href=".$replacement[$i][1].">".$replacement[$i][0]."</a>"; $string=str_replace_limit($replacement[$i][0],$replacement[$i][1],$string,$replacement[$i][2]); } return $string; } echo keylinks($string,$replacement);
foreach($replacement as $v) { $p = '/([^>])(' . preg_quote($v[0]) . ')([^<])/s'; $r = "$1<a herf='$v[1]'>$2</a>$3"; $n = $v[2]; $string = preg_replace($p, $r, $string, $n);}echo $string;
foreach($replacement as $v) { $p = '/([^>])(' . preg_quote($v[0]) . ')([^<])/s'; $r = "$1<a herf='$v[1]'>$2</a>$3"; $n = $v[2]; $string = preg_replace($p, $r, $string, $n);}echo $string;