首页 » 建站技术 » PHP 技术 » 浏览内容

[Monkey's PHP教程] 第七章 宏替换函数


2006-09-07 15:57:54 6,066 0 发表评论 字体: 作者:C.K.
标签: 教程

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From:http://lesson.phpso.com/article.php?1458.html

  宏替换函数完全利用了正则表达式的规则,因此也可以称为正则表达式函数。

preg_replace:

函数格式:mixed preg_replace(mixed pattern, mixed replacement, mixed string);

这个函数会使用将string中符合表达式pattern的字符串全部替换为表达式replacement。如果replacement中需要包含pattern的部分字符,则可以使用”()”来记录,在replacement中只是需要用”\1″来读取。

举例:
1〉〉普通的字符串替换
echo preg_replace(“'你'”, “我”, “你好啊!”);
普通的替换建议直接用str_replace,这样速度比preg_replace速度快。
2〉〉 把字符串转换为“%”加十六进制的HTML模式
echo preg_replace(“#(.)#e”, “'%'.DecHex(Ord('\\1'))”, “你好啊”);


显示结果为:%c4%e3%ba%c3%b0%a1
3〉〉 把“%”加十六进制的HTML字符串改为普通字串
$text=”%c4%e3%ba%c3%b0%a1″;
echo preg_replace(“#%([0-9A-Za-z][0-9A-Za-z])#e”,”Chr(HexDec('\\1')) “,$text);
或者
echo preg_replace(“#%([0-9A-Za-z][0-9A-Za-z])#e”,
“Chr(base_convert('\\1',16,10)) “,$text);
显示结果为:你好啊
4〉〉 转换论坛帖子中输入的Email地址为链接
$text = preg_replace(“#^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$#”,
\\0“, $text);
5〉〉 转换论坛帖子中输入的网址为链接
$text = preg_replace(“#[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]#”,
\\0\\0\”>\\0“, $text);
6〉〉 自定义脚本
function do_value($a)
{
if ($a=='c_name') {$ret = “李红痣”;}
if ($a=='i_age') {$ret = “14”;}
return $ret;
}
$text = <<您的名称为:

您的年龄为:

EOF;
$text = preg_replace( “#\#e” , “do_value(\\1)”, $text);
echo $text;
显示结果为:
您的名称为:李红痣
您的年龄为:14
7〉〉 去掉论坛帖子中所有的HTML标记
$search = array (
“']*?>.*?'si”,”'<[\/\!]*?[^<>]*?>'si”,”'([\r\n])[\s]+'”,”'&(quot|#34);'i”,”'&(amp|#38);'i”,”'&(lt|#60);'i”,”'&(gt|#62);'i”,”'&(nbsp|#160);'i”,”'&(iexcl|#161);'i”,”'&(cent|#162);'i”,”'&(pound|#163);'i”,”'&(copy|#169);'i”,”'&#(\d+);'e”);
$replace = array (
“”,””,”\\1″,”\””,”&”,”<",">“,” “,chr(161),chr(162),chr(163), chr(169), “chr(\\1)”);
$text = preg_replace ($search, $replace, $document);

preg_match :

函数格式:int preg_match(string pattern, string subject, array [matches]);

这个函数会在string中使用pattern表达式来匹配,如果给定了[regs],就会将string记录到[regs][0]中,[regs][1]代表使用括号”()”记录下来的第一个字符串,[regs][2]代表记录下来的第二个字符串,以此类推。preg如果在string中找到了匹配的pattern,就会返回”true”,否则返回”false”。

宏替换的利用,数据类库

  类库同时支持MySQL、MSSQL、Access,运用宏替换函数,采用自己定义脚本的方式进行方便的数据访问。

从一个选择题的例子开始,慢慢的深入用新的数据类库进行的,动态网页制作的方法。

数据库类型:ACCESS数据库文件名称:db.mdb

首先在类库文件中指定用ACCESS方法并设定好db.mdb

深入1:

require('db_class.php'); //引用类库
DB_Table(“questiongstr”,””,$result); //打开题库表格
for ($i=0;$i{
echo $result[$i]['question'].”
“; //显示问题
}
?>

新的数据函数中 DB_Table() 为打开数据库表格,第一个参数为数据库表名称;第二个参数为SQL SELECT子句引用如“where”子句或者“order by”子句等等;第三个参数为返回值,返回值为二唯数组。

直接用PHP的查看数组条目函数count即可返回结果的记录数。直接调用相应的二唯数组即可得到相应的值。

深入2:

require('db_class.php');

$MCS=”

  • 问题:
    选项:
    “; //按照自定脚本格式设定字符串

    DB_Table(“questiongstr”,””,$result);
    for ($i=0;$i{
    DB_mc_show($MCS,'show',$i,$result); //读取脚本显示内容
    }
    ?>
    直接利用宏替换函数的特性自定义了脚本,设定在字符串$MCS中,并用DB_mc_show() 函数解析此字符串。

    DB_mc_show()函数第一个参数为自定义脚本字串;第二个参数表示解析后的字符串如何利用是“get”还 是“show”;第三个参数引用当前的循环变量作为内部调用二唯数组;第四个及以后的参数为引用脚本所涉及的二唯数组资料。

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5066 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14169183 位访客

    广告区 Guǎng Gào