首页 > 编程技术 > php

几个比较有用的正则表达式

发布时间:2016-11-25 16:15

匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}
匹配空行的正则表达式: [s| ]*
匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
验证jpg和GIF图片:^.{1,}.((j|J)(p|P)(g|G)|(g|G)(i|I)(f|F))$
验证IP地址:
^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$


  据国外媒体报道,Linux和其他开源软件遭到病毒或黑客袭击的概率一般比较小。不过,最近所发现的一个蠕虫病毒引发了开源界的关注。因为这个病毒的袭击目标正是Linux平台上广为流行的WEB应用服用工具(平台)PHP。
 
  这个蠕虫病毒利用了PHP的XML-RPC组件中的一个漏洞。可以对网站服务器发起攻击。
  据悉,XML-RPC作为PHP的一部分,被诸如PostNuke、Drupal、b2evolution、Xoops、WordPress、PHPGroupWare和TikiWiki等产品所使用。在Lupper蠕虫病毒的消息传出以后,这些组件的开发商已经先后进行了升级或是推出了补丁包。
  由于Linux及其开源应用软件安全性比较高,杀毒软件厂商并未及时对这个蠕虫提出警告。
  XML-RPC的漏洞最初发现于今年6月,8月份报出了第二个安全警告。由于大多数用户没有升级XML-RPC,导致蠕虫病毒逐渐传播开来。


  以下范例将 XML 文档中的标记符直接映射成 HTML 标记符。在“映射数组”中不存在的元素将被忽略。当然,该范例将只对一个特定的 XML 文档有效。
 

<?php
$file = "data.xml";
$map_array = array(
"BOLD" => "B",
"EMPHASIS" => "I",
"LITERAL" => "TT"
);
function startElement($parser, $name, $attrs) {
global $map_array;
if ($htmltag == $map_array[$name]) {
print "<$htmltag>";
}
}
function endElement($parser, $name) {
global $map_array;
if ($htmltag == $map_array[$name]) {
print "</$htmltag>";
}
}
function characterData($parser, $data) {
print $data;
}
$xml_parser = xml_parser_create();
// 使用大小写折叠来保证我们能在元素数组中找到这些元素名称
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>


  该范例用缩进格式显示一个文档中起始元素的结构。
 
  显示 XML 元素结构

<?php
$file = "data.xml";
$depth = array();
function startElement($parser, $name, $attrs) {
global $depth;
for ($i = 0; $i < $depth[$parser]; $i ) {
print " ";
}
print "$name ";
$depth[$parser] ;
}
function endElement($parser, $name) {
global $depth;
$depth[$parser]--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>


  randimage.php

<?php
/*
---------------------------------------------------------
| By Bleakwind http://www.weaverdream.com
---------------------------------------------------------
*/
$dir = "images/";//图片目录,注意是按照名字排序显示的...
$imgwidth = 0;//图片宽度,为0则为原始大小
$iforder = 1;//顺序显示还是随机显示,1为顺序显示,0为随机显示
$ifcircle = 0;//顺序显示的时候是否循环播放,1为循环播放,0为不循环
session_start();
if($imgwidth==0){$imgwidth=="";}else{$imgwidth=="width='".$imgwidth."'";}
$handle=opendir($dir);
while ($file_name=readdir($handle)){
if(($file_name!==".")&&($file_name!=="..")){$file_list[]=$file_name; }
}
closedir($handle);
if($iforder==1){
if(isset($_SESSION['sess_order'])){
if($_SESSION['sess_order']<count($file_list)-1){
$_SESSION['sess_order'] ;
}else{
if($ifcircle == 1){
$_SESSION['sess_order']=0;
}
}
}else{
$_SESSION['sess_order']=0;
}
$i=$_SESSION['sess_order'];
}else{
$num=count($file_list)-1;
$i=rand(0,$num);
}
readfile($dir.$file_list[$i]);
?>
  调用

<img" width=100% src="randimage.php" border="0">


标签:[!--infotagslink--]

您可能感兴趣的文章: