这个简单的函数有两个参数:第一个是你要匹配的标签,第二个是包含XML或HTML的变量,再强调下,这个真的很强大
function get_tag( $tag, $xml ) {
$tag = preg_quote($tag);
preg_match_all(‘{<’.$tag.’[^>]*>(.*?)</’.$tag.’>.’}',
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[1];
}
匹配具有属性值的XML或者HTML标签
这个功能和上面的非常相似,但是它允许你匹配的标签内部有属性值,例如你可以轻松匹配 <div id=”header”>
function get_tag( $attr, $value, $xml, $tag=null ) {
if( is_null($tag) )
$tag = ‘\w+’;
else
$tag = preg_quote($tag);
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = “/<(“.$tag.”)[^>]*$attr\s*=\s*”.
“(['\"])$value\\2[^>]*>(.*?)<\/\\1>/”
preg_match_all($tag_regex,
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[3];
}
匹配十六进制颜色值
web开发者的另一个有趣的工具,它允许你匹配和验证十六进制颜色值.
$string = “#555555″;
if (preg_match(‘/^#(?:(?:[a-fd]{3}){1,2})$/i’, $string)) {
echo “example 6 successful.”;
}
查找页面 title
这段代码方便查找和打印 网页 <title> 和</title> 之间的内容
$fp = fopen(“”,”r”);
while (!feof($fp) ){
$page .= fgets($fp, 4096);
}
$titre = eregi(“<title>(.*)</title>”,$page,$regs);
echo $regs[1];
fclose($fp);
解释 Apache 日志
大多数网站使用的都是着名的Apache服务器,如果你的网站也是,那么使用PHP正则表达式解析 apache 服务器日志 怎么样?
//Logs: Apache web server
//Successful hits to HTML files only. Useful for counting the number of page views.
‘^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+”(?:GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+”s+(?#status code)200s+((?#bytes transferred)[-0-9]+)s+”((?#referrer)[^"]*)”s+”((?#user agent)[^"]*)”$’
//Logs: Apache web server
//404 errors only
‘^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+”(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+”s+(?#status code)404s+((?#bytes transferred)[-0-9]+)s+”((?#referrer)[^"]*)”s+”((?#user agent)[^"]*)”$’
使用智能引号代替双引号
如果你是一个印刷爱好者,你将喜欢这个允许用智能引号代替双引号的正则表达式,这个正则被WORDPRESS在其内容上使用
preg_replace(‘B”b([^"x84x93x94rn]+)b”B’, ‘?1?’, $text);
检验密码的复杂度
这个正则表达式将检测输入的内容是否包含6个或更多字母,数字,下划线和连字符. 输入必须包含至少一个大写字母,一个小写字母和一个数字
‘A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z’
WordPress: 使用正则获得 帖子上的图片
我知道很多人是WORDPRESS的使用者,你可能会喜欢并且愿意使用 那些从帖子的内容检索下来的图像代码。使用这个代码在你的BLOG只需要复制下面代码到你的某个文件里
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$szPostContent = $post->post_content;
$szSearchPattern = ‘~<img [^>]* />~’;
// Run preg_match_all to grab all the images and save the results in $aPics
preg_match_all( $szSearchPattern, $szPostContent, $aPics );
// Check to see if we have at least 1 image
$iNumberOfPics = count($aPics[0]);
if ( $iNumberOfPics > 0 ) {
// Now here you would do whatever you need to do with the images
// For this example the images are just displayed
for ( $i=0; $i < $iNumberOfPics ; $i++ ) {
echo $aPics[0][$i];
};
};
endwhile;
endif;