比较基础的php面试题及答案 编程题部分

<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(&rdquo;.&rdquo;,$file);<br /> return $ext[1];<br /> }<br /> 答案2:<br /> function getExt($url) {<br /> $url = basename($url);<br /> $pos1 = strpos($url,&rdquo;.&rdquo;);<br /> $pos2 = strpos($url,&rdquo;?&rdquo;);<br /> if(strstr($url,&rdquo;?&rdquo;)){<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. &lsquo; 和 &rdquo; 在此处是可以互换的<br /> 4. &lsquo;Content-Type&rsquo; 两侧的引号是可以忽略的,但 &lsquo;text/html; charset=gbk&rsquo; 两侧的不行<br /> 5. 注意处理多余空格<br /> <br /> 3. 写一个函数,算出两个文件的相对路径<br /> 如 $a = &lsquo;/a/b/c/d/e.php&rsquo;;<br /> $b = &lsquo;/a/b/12/34/c.php&rsquo;;<br /> 计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上<br /> 答:function getRelativePath($a, $b) {<br /> $returnPath = array(dirname($b));<br /> $arrA = explode(&rsquo;/', $a);<br /> $arrB = explode(&rsquo;/', $returnPath[0]);<br /> for ($n = 1, $len = count($arrB); $n &lt; $len; $n++) {<br /> if ($arrA[$n] != $arrB[$n]) {<br /> break;<br /> }<br /> }<br /> if ($len ? $n &gt; 0) {<br /> $returnPath = array_merge($returnPath, array_fill(1, $len ? $n, &lsquo;..&rsquo;));<br /> }<br /> <br /> $returnPath = array_merge($returnPath, array_slice($arrA, $n));<br /> return implode(&rsquo;/', $returnPath);<br /> }<br /> echo getRelativePath($a, $b);<br /> </p>
RangeTime:0.003430s
RangeMem:197.74 KB
返回顶部 留言