PHP折腾笔记

多语言达成!所以没有一个漂亮的切换图标怎么行?做了一个old school的粉色霓虹灯, 色彩取的 Drive 上的=D
排版看了下CSS,一个div position=absolute套在一个div position=relative里就可以浮在内容上面了。链接很伤脑筋,本来想通过cookie切换这样URL看起来漂亮点没有?lang=xxx,但是插件(qtranslate)没提供这个,我又不会php就不兴起这么可怕的自己写的念头了.. 至于php的参数,试了下手动编辑弄的想死,显然不是科学的方法,所以搜了下偷别人的函数

function addURLParameter ($url, $paramName, $paramValue) {
     $url_data = parse_url($url);
     $params = array();
     parse_str($url_data['query'], $params);
     $params[$paramName] = $paramValue;   
     $params_str = http_build_query($params);
     return http_build_url($url, array('query' => $params_str));
}

然后判断下

	<?php
		$currentURL=get_option('home').$_SERVER['REQUEST_URI'] ;
		if($lang=='' || $lang=='cn') {
			$targetURL=addURLParameter($currentURL,'lang','en');
			echo "<a href=" . $targetURL ."><img src='./uploads/pics/blog_lang_en.png' height=82 w=206 /></a>";
		}
		else {
			$targetURL=addURLParameter($currentURL,'lang','cn');
			echo "<a href=" . $targetURL ."><img src='./uploads/pics/blog_lang_zh.png' height=82 w=161 /></a>";
		}
     	 ?>

然后网站被玩坏掉了.. 一番【基本靠猜】的debug后发现http_build_url()是什么PECL包里的,就是不是标准库,于是用了下面那个(之前没注意因为不知道PECL是啥)

 function build_url($url_data) {
     $url="";
     if(isset($url_data['host']))
     {
         $url .= $url_data['scheme'] . '://';
         if (isset($url_data['user'])) {
             $url .= $url_data['user'];
                 if (isset($url_data['pass'])) {
                     $url .= ':' . $url_data['pass'];
                 }
             $url .= '@';
         }
         $url .= $url_data['host'];
         if (isset($url_data['port'])) {
             $url .= ':' . $url_data['port'];
         }
     }
     $url .= $url_data['path'];
     if (isset($url_data['query'])) {
         $url .= '?' . $url_data['query'];
     }
     if (isset($url_data['fragment'])) {
         $url .= '#' . $url_data['fragment'];
     }
     return $url;
 }

折腾了一中午达到了略骚包的效果,我很满意。

发表评论

电子邮件地址不会被公开。 必填项已用*标注