php匹配并替换

时间:2010-10-11 15:55:41

标签: php html regex uri

我想用字符串的修改版本替换我在字符串中找到的每个链接,比如说:

  

快速的棕色狐狸跳过http://www.google.com/?v=abchttp://www.google.com/?v=x_y-z   我会替换(并修改)此链接,使其成为:http://www.google.com/v/abchttp://www.google.com/v/x_y-z

我知道如何使用preg_match_all找到所有链接($ pattern,$ text,$ out,PREG_SET_ORDER); 我可以使用preg_split等操作字符串 - 这是一次一个。

我正在寻找的结果是:

  

快速的棕色狐狸跳过http://www.google.com/v/abchttp://www.google.com/v/=x_y-z   但是,我如何匹配并替换所有这些?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

使用preg_replace

$str = preg_replace('/\?v=([^ ]*)/', '/v/$1', $str);

这假定您要匹配?v=之后的所有内容并将其放在/v/之后。如果情况并非如此,那么你必须更具体地了解模式是什么。

答案 1 :(得分:1)

使用g(全局)和i(不区分大小写)标记应该将搜索扩展到所有内容。

$string = preg_replace('/\?v=([^\s]+)/gi','/v/$1', $string);

这假设您的网址后面有某种类型的空格。