<p>编程题:<br />
1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名<br />
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php<br />
答案1:<br />
function getExt($url){<br />
$arr = parse_url($url);<br />
<br />
$file = basename($arr['path']);<br />
$ext = explode(”.”,$file);<br />
return $ext[1];<br />
}<br />
答案2:<br />
function getExt($url) {<br />
$url = basename($url);<br />
$pos1 = strpos($url,”.”);<br />
$pos2 = strpos($url,”?”);<br />
if(strstr($url,”?”)){<br />
return substr($url,$pos1 + 1,$pos2 ? $pos1 ? 1);<br />
} else {<br />
return substr($url,$pos1);<br />
}<br />
}<br />
<br />
2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句<br />
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5<br />
请注意:<br />
1. 需要处理完整的 html 页面,即不光此 meta 语句<br />
2. 忽略大小写<br />
3. ‘ 和 ” 在此处是可以互换的<br />
4. ‘Content-Type’ 两侧的引号是可以忽略的,但 ‘text/html; charset=gbk’ 两侧的不行<br />
5. 注意处理多余空格<br />
<br />
3. 写一个函数,算出两个文件的相对路径<br />
如 $a = ‘/a/b/c/d/e.php’;<br />
$b = ‘/a/b/12/34/c.php’;<br />
计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上<br />
答:function getRelativePath($a, $b) {<br />
$returnPath = array(dirname($b));<br />
$arrA = explode(’/', $a);<br />
$arrB = explode(’/', $returnPath[0]);<br />
for ($n = 1, $len = count($arrB); $n < $len; $n++) {<br />
if ($arrA[$n] != $arrB[$n]) {<br />
break;<br />
}<br />
}<br />
if ($len ? $n > 0) {<br />
$returnPath = array_merge($returnPath, array_fill(1, $len ? $n, ‘..’));<br />
}<br />
<br />
$returnPath = array_merge($returnPath, array_slice($arrA, $n));<br />
return implode(’/', $returnPath);<br />
}<br />
echo getRelativePath($a, $b);<br />
</p>