几道常见的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/");
?>
/*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/");
?>
相关文章推荐
- 常见的php笔试题(附答案)搜集整理
- 我自己想的几道入门PHP笔试题
- PHP开发中最常见的文件操作疑难解答
- [原创]我自己想的几道入门PHP笔试题
- PHP安装攻略:常见问题解答(一)
- 新编php找工作常见面试笔试汇总
- PHP浮点数的一个常见问题的解答
- 学习动态网页PHP技术常见问题汇总解答
- PHP浮点数的一个常见问题的解答
- 百度php/jsp职位在线笔试真题专家解答
- 常见的面试笔试题 及其解答
- PHP常见【英文错误提示】解答
- PHP浮点数的一个常见问题的解答
- 2011,sina php 笔试及我的解答
- 【面试笔试-php】几道php小面试题目
- PHP常见面试题目深入解答分析(二)
- PHP安装攻略:常见问题解答(一)
- PHP常用函数和常见疑难问题解答
- [原创]我自己想的几道入门PHP笔试题
- PHP安装攻略:常见问题解答(一)