您的位置:首页 > 编程语言 > PHP开发

几道常见的php笔试题解答

2009-09-26 09:42 295 查看
<?php
/*1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
  例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
*/
$url ="http://www.sina.com.cn/abc/de/fg.php?id=1";
$search = "/(.[a-zA-Z]+)\?/";
$matches = NULL;
preg_match_all($search,$url,$matchs,PREG_SET_ORDER);
print_r($matchs);
echo "<br>";
echo $matchs[0][1];
echo "<br>";
/*2. 在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句
  请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
  请注意:
  1. 需要处理完整的 html 页面,即不光此 meta 语句
  2. 忽略大小写
  3. ' 和 " 在此处是可以互换的
  4. 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
  5. 注意处理多余空格
*/
$html = file_get_contents("index.html");
//$html = "<Meta http-equiv=Content-Type content='text/html; charset=UTF-8'>";
echo strlen($html)."<br>";
//替换编码
$meta = "/<meta\s+http-equiv\s*\=\s*Content-Type\s+content\s*\=\s*[\'\"\s]\s*text\/html\s*;\s*charset\s*\=\s*[0-9a-zA-Z-]+\s*[\'\"\s]\s*\>/i";
preg_match_all($meta,$html,$matchs,PREG_SET_ORDER);
$html = preg_replace($meta,"<Meta http-equiv=Content-Type content='text/html; charset=gb2312'>",$html);
print_r($matchs);
$matches = NULL;
preg_match_all($meta,$html,$matchs,PREG_SET_ORDER);
print_r($matchs);

/* 3写一个函数,算出两个文件的相对路径
  如 $a = '/a/b/c/d/e.php';
  $b = '/a/b/12/34/c.php';
  计算出 $b 相对于 $a 的相对路径应该是 ../../c/d将()添上
*/
function RealitivePath($a,$b)
{
$afolder = dirname($a);
$bfolder = dirname($b);
//echo $afolder.$bfolder;
//return;
while ($afolder!=$bfolder)
{
if($afolder == "\\")
break;
echo "<br>".$afolder."^".$bfolder."<br>";
while ($bfolder!=$afolder)
{
if ($bfolder=="\\")
break;
$bfolder = dirname($bfolder);
echo "\$bfolder:".$bfolder."<br>";
}
if($afolder==$bfolder)
break;
$bfolder = dirname($b);
$afolder = dirname($afolder);
}
$samePath = $afolder;
$returnPath = "";
$afolder = dirname($a);
$bfolder = dirname($b);
while ($samePath != $bfolder)
{
$returnPath .= "../";
$bfolder = dirname($bfolder);
}
return dirname(($returnPath.substr($a,strlen($samePath)+1)));
}
echo RealitivePath('/a/b/c/d/e.php','/a/b/12/34/c.php');
//echo dirname("/adsf/asdfa");
//4遍历子文件夹
function findPath($path)
{
$handle = dir($path);
//echo ($handle);
if($handle)
{
while (($entry=$handle->read())!=false)
{
if(is_dir($path.$entry))
{

if($entry!="."&&$entry!="..")
{
echo "目录:".$path.$entry."<br>";
findPath($path.$entry."/");
}
}
else if(is_file($path.$entry))
{
echo "文件:".$path.$entry."<br>";
}
}
}
if($handle)
$handle->close();
}
findPath("D:/download/");
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: