Heim > Backend-Entwicklung > PHP-Tutorial > 技术贴 关于PHP字符串替换方面的 经常碰到 看描述

技术贴 关于PHP字符串替换方面的 经常碰到 看描述

WBOY
Freigeben: 2016-06-23 13:46:43
Original
955 Leute haben es durchsucht

实例代码

$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);
Nach dem Login kopieren

想要的功能

第二次已经替换了 数组可以 但是第三次替换的时候 却替换成了数组

想要实现的是 第二次替换的时候 有没办法 略过已经替换过的


回复讨论(解决方案)

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;
Nach dem Login kopieren
Nach dem Login kopieren
键名 数组可以同时含有integer和 string 类型的键名,12345678 因为 PHP 实际并不区分索引数组和关联数组。
如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。

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;
Nach dem Login kopieren
Nach dem Login kopieren
 键名 数组可以同时含有integer和 string 类型的键名,12345678 因为 PHP 实际并不区分索引数组和关联数组。
如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。



尝试过这种方法 不过没有作用 达不到想要的效果  不知道还有其他的方法没
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage