特把php手册中的例子集中起来,便于以后学习。
例子如下:
1. 根据购物车中的商品Item ID,准确判断客人的原装机型号。
<?php
$title = "Replacement Canon BP-511 Camcorder
Battery [Item ID:3-236-523]";
if( eregi("(\[Item
ID:)([0-9]+)-([0-9]+)-([0-9]+)(])",$title,$arr) ){
echo
"<pre>";
print_r($arr);
echo
"</pre>";
}
?>
|
2. 匹配日期
<?php
//
分隔符可以是斜线,点,或横线
$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date); // 漏洞:
04/30-1973也能匹配得上
echo "Month: $month; Day: $day; Year:
$year<br />\n";
?>
|
3. 搜索单词 web
<?php
if (preg_match ("/\bweb\b/i", "PHP is the website scripting language
of choice.")) {
print
"A match was
found.";
} else {
print
"A match was not
found.";
}
?>
|
4. 从url 中取出域名
<?php
// 从 URL
中取得主机名
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html",
$matches);
$host = $matches[2];
//
从主机名中取得后面两段
preg_match("/[^\.\/]+\.[^\.\/]+$/",
$host, $matches);
echo "domain name is:
{$matches[0]}\n";
// 本例执行后将输出: domain name is:
php.net
?>
|
5. 你知道下面的程序输出什么?
<?php
preg_match_all
("|<[^>]+>(.*)</[^>]+>|U",
"<b>example:
</b><div
align=left>this is a
test</div>",
$out,
PREG_PATTERN_ORDER); //
注意PREG_PATTERN_ORDER和PREG_SET_ORDER的区别
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
echo "<pre>";
print_r($out);
?>
|
6. 功能: 转义正则表达式字符,此函数很有用,可以供你写正则表达式时参考
<?php
$keywords = "$40 for a g3/400";
$keywords = preg_quote ($keywords, "/");
echo $keywords; // returns \$40 for a
g3\/400
?>
|
7. 看人家如何用 preg_quote() 函数实现高亮显示
<?php
// 本例中,preg_quote($word)
用来使星号不在正则表达式中
//
具有特殊含义。
$textbody = "This book is *very* difficult to
find.";
$word = "*very*";
$textbody = preg_replace ("/".preg_quote($word)."/",
"<b>".$word."</b>",
$textbody);
echo $textbody;
?>
|
8. 用回调函数执行正则表达式的搜索和替换
<?php
// 此文本是用于 2002 年的,
// 现在想使其能用于 2003 年
$text = "April fools day is
04/01/2002\n";
$text.= "Last christmas was
12/24/2001\n";
// 回调函数
function next_year($matches) {
//
通常:$matches[0] 是完整的匹配项
//
$matches[1] 是第一个括号中的子模式的匹配项
//
以此类推
return
$matches[1].($matches[2]+1);
}
echo preg_replace_callback(
"|(\d{2}/\d{2}/)(\d{4})|",
"next_year",
$text);
// 结果为:
// April fools day is
04/01/2003
// Last christmas was
12/24/2002
?>
|
9. 在 preg_replace() 中使用索引数组
<?php
$string = "The quick brown fox jumped over the
lazy dog.";
$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";
$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";
print preg_replace($patterns, $replacements, $string);
ksort($patterns);
ksort($replacements);
print preg_replace($patterns, $replacements, $string);
?>
|
10. 将 HTML 转换成文本
<?php
// $document 应包含一个 HTML
文档。
// 本例将去掉 HTML 标记,javascript
代码
//
和空白字符。还会将一些通用的
// HTML
实体转换成相应的文本。
$search = array ("'<script[^>]*?>.*?</script>'si",
// 去掉 javascript
"'<[\/\!]*?[^<>]*?>'si",
// 去掉 HTML 标记
"'([\r\n])[\s]+'",
// 去掉空白字符
"'&(quot|#34);'i",
// 替换 HTML 实体
"'&(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");
// 作为 PHP 代码运行
$replace = array
("",
"",
"\\1",
"\"",
"&",
"<",
">",
"
",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text = preg_replace ($search, $replace, $document);
?>