PHP转义文章内容字符串中的网址

2013-09-22  金城  2371

如果正文的内容中含有未转义的网址(含有中文或其他非字母字符构成的网址),又遇上不同地域默认的文件字符编码的不同,再加上浏览器的不同。一些内容中的非转义网址就不会得到浏览器的正确解析而出现404错误。

下面的例子可以转义文章内容中的网址:

$content="<a href=\"member/name/张三\">张三</a><a href=\"member/name/李四\">李四</a><a href=\"member/name/王二麻\">王二麻</a>";
function at($content){
  $s = preg_replace('/href="([^"]+)"/','href="<My*Flag>$1</My*Flag>"/',$content);
  $rlt=preg_match_all('/<My\*Flag>[^\*]+<\/My\*Flag>/',$s,$matches,PREG_PATTERN_ORDER);  
  
  //print_r($matches);
  if($rlt){
    $l=count($matches[0]);
    for($i=0;$i<$l;$i++){
      $mi=$matches[0][$i];
      $s=str_replace($mi,urlencode(strip_tags($mi)),$s);
    }
  }
  return $s;
}
echo at($content);