当前位置:首页 > 教程 > PHP > 15个PHP正则表达式

15个PHP正则表达式

对于开发人员来说,正则表达式是一个非常有用的功能,它提供了 查找,匹配,替换 句子,单词,或者其他格式的字符串。这篇文章主要介绍了几个超实用的php正则表达式,需要的朋友可以参考下。

php

从一个字符串中 突出某个单词

这是一个非常有用的在一个字符串中匹配出某个单词 并且突出它,非常有效的搜索结果

1
2
3
4
5
$text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or
 
regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor"; 
$text = preg_replace("/b(regex)b/i", '<span style="background:#5fc9f6">1</span>', $text); 
echo $text;

突出查询结果在你的 WordPress 博客里就像刚才我说的,上面的那段代码可以很方便的搜索出结果,而这里是一个更好的方式去执行搜索在某个WordPress的博客上打开你的文件 search.php ,然后找到 方法 the_title() 然后用下面代码替换掉它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo $title; 
 
Now, just before the modified line, add this code: 
 
<?php 
  $title   = get_the_title(); 
  $keys= explode(" ",$s); 
  $title   = preg_replace('/('.implode('|', $keys) .')/iu', 
    '<strong>\0</strong>', 
    $title); 
?> 
 
Save the search.php file and open style.css. Append the following line to it: 
 
strong.search-excerpt { background: yellow; }

从HTML文档中获得全部图片

如果你曾经希望去获得某个网页上的全部图片,这段代码就是你需要的,你可以轻松的建立一个图片下载机器人

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$images = array(); 
preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media); 
unset($data); 
$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]); 
foreach($data as $url) 
{ 
  $info = pathinfo($url); 
  if (isset($info['extension'])) 
  { 
    if (($info['extension'] == 'jpg') || 
    ($info['extension'] == 'jpeg') || 
    ($info['extension'] == 'gif') || 
    ($info['extension'] == 'png')) 
    array_push($images, $url); 
  } 
}

删除重复字母

经常重复输入字母? 这个表达式正适合.

1
$text = preg_replace("/s(w+s)1/i", "$1", $text);

删除重复的标点

功能同上,但只是面对标点,白白重复的逗号

1
$text = preg_replace("/.+/i", ".", $text);

匹配一个XML或者HTML标签

这个简单的函数有两个参数:第一个是你要匹配的标签,第二个是包含XML或HTML的变量,再强调下,这个真的很强大

1
2
3
4
5
6
7
8
9
function get_tag( $tag, $xml ) { 
 $tag = preg_quote($tag); 
 preg_match_all('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>.'}', 
          $xml, 
          $matches, 
          PREG_PATTERN_ORDER); 
 
 return $matches[1]; 
}

匹配具有属性值的XML或者HTML标签

这个功能和上面的非常相似,但是它允许你匹配的标签内部有属性值,例如你可以轻松匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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开发者的另一个有趣的工具,它允许你匹配和验证十六进制颜色值.

1
2
3
4
$string = "#555555"; 
if (preg_match('/^#(?:(?:[a-fd]{3}){1,2})$/i', $string)) { 
echo "example 6 successful."; 
}

查找页面 title

这段代码方便查找和打印 网页 之间的内容

1
2
3
4
5
6
7
8
$fp = fopen("http://www.catswhocode.com/blog","r"); 
while (!feof($fp) ){ 
  $page .= fgets($fp, 4096); 
} 
 
$titre = eregi("<title>(.*)</title>",$page,$regs); 
echo $regs[1]; 
fclose($fp);

php

解释 Apache 日志

大多数网站使用的都是著名的Apache服务器,如果你的网站也是,那么使用PHP正则表达式解析 apache 服务器日志 怎么样?

1
2
3
4
5
6
7
//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: 使用正则获得帖子上的图片

我知道很多人是WORDPRESS的使用者,你可能会喜欢并且愿意使用 那些从帖子的内容检索下来的图像代码。使用这个代码在你的BLOG只需要复制下面代码到你的某个文件里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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; 
?>

代码总结

仔细看看这些代码,我们会发现这些代码其实并不是很麻烦,只是一些逻辑上的问题,如果觉得对你帮助,就收藏下来吧。

  • << 自己动手写一个MyORM
  • 深入浅出分布式系统 >>
  • 作者:
    除非注明,本文原创:知道91,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zhidao91.com/php-regular/

    相关文章 近期热评 最新文章

    • PHP Array 简介
      知道91 | PHP Array 简介:创建数组、把一个数组分割为新的数组块、通过合并两个数组来创建一个新数组、返回两个数组的差集数组、检查数组中是否存在指定的值。
    • PHP 简介
      知道91 - PHP 文件可包含文本、HTML 标签以及脚本。PHP 文件中的脚本可在服务器上执行。这和JSP或者ASP有些类似,就是逻辑的地方使用PHP的语法,以此来构造一个完整的HT...
    • PHP 字符串
      知道91 - PHP字符串详解,介绍几个在 PHP 中用于操作字符串的最常用的函数和运算符。
    • PHP 语法基础知识
      知道91 - PHP基本语法的讲解,介绍了PHP的服务器解释原理、PHP的基本语法标记以及PHP的注释介绍。
    • PHP If Else 语句讲解
      知道91 - if..else 语句是php的最常用的逻辑控制结构语句,本文介绍了php if...else 语句的使用方法,以及实例讲解。
    • PHP Switch 语句讲解
      知道91 | Switch语句也是面向对象编程语句中最长常见的逻辑控制语句了。Switch 语句用于执行基于多个不同条件的不同动作 - 即当条件不同的时候,执行不同的逻辑操作 - P...
    • 怎样在WordPress中安装Google Analytics
      就算你积累了多年网站建设的经验,你都不可能一开始就建一个外观,速度,功能以及转化都很完美的网站。你能做的并且也是各个站长正在做的,无非是通过不断的监测来改进...
    • 怎样在WordPress中安装Google Analytics
      就算你积累了多年网站建设的经验,你都不可能一开始就建一个外观,速度,功能以及转化都很完美的网站。你能做的并且也是各个站长正在做的,无非是通过不断的监测来改进...
    • oracle数据库相关操作注意事项
      修改Oracle SGA(共享内存) 很多网站说修改Oracle的内存通过命令 如果你这么做了,那么恭喜你,你的Oracle数据库无法启动了。如果你已经这么做了,恢复Oracle启动的方...
    • 使用微信JDK实现微信接口签名验证
      要使用微信的接口必须在绑定的域名下测试;签名必须先向微信请求到access_token,然后用access_token再去请求jsapi_ticket,最后用jsapi_ticket和相关的参数按照ASCII码...
    • ABP开发指南系列教程(2) – 多层架构...
      为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术。为了实现分层的体系结构,ABP遵循DDD(领域驱动设计)的原则,将工程分为四个层: 展现层(...
    • ABP开发指南系列教程(1) – 入...
      ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WE...
    • Windows下 JIRA + Agile + Mysql 破解...
      本文讲述了Windows下 JIRA + Agile + Mysql 破解安装示例教程