Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >15个实用的PHP正则表达式

15个实用的PHP正则表达式

原创
作者头像
大师级码师
修改于 2021-10-27 07:49:23
修改于 2021-10-27 07:49:23
80901
代码可运行
举报
文章被收录于专栏:大师级码师大师级码师
运行总次数:1
代码可运行

对于开发人员来说,正则表达式是一个非常有用的功能,它提供了 查找,匹配,替换 句子,单词,或者其他格式的字符串。这篇文章主要介绍了15个超实用的php正则表达式,需要的朋友可以参考下。在这篇文章里,我已经编写了15个超有用的正则表达式,WEB开发人员都应该将它收藏到自己的工具包。验证域名检验一个字符串是否是个有效域名.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$url = "http://komunitasweb.com/"; 
if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) { 
  echo "Your url is ok."; 
} else { 
  echo "Wrong url."; 
}

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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() 然后用下面代码替换掉它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文档中获得全部图片

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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); 
  } 
}

删除重复字母

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$text = preg_replace("/s(w+s)1/i", "$1", $text);

删除重复的标点

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$text = preg_replace("/.+/i", ".", $text);

匹配一个XML或者HTML标签

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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”>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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开发者的另一个有趣的工具,它允许你匹配和验证十六进制颜色值.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$string = "#555555"; 
if (preg_match('/^#(?:(?:[a-fd]{3}){1,2})$/i', $string)) { 
echo "example 6 successful."; 
}

查找页面 title

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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);

解释 Apache 日志

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//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在其内容上使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
preg_replace('B"b([^"x84x93x94rn]+)b"B', '?1?', $text);

检验密码的复杂度

这个正则表达式将检测输入的内容是否包含6个或更多字母,数字,下划线和连字符. 输入必须包含至少一个大写字母,一个小写字母和一个数字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'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只需要复制下面代码到你的某个文件里

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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; 
?> 

自动生成笑脸图案

被WordPress使用的另一个方法, 这段代码可使你把图像自动更换一个笑脸符号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$texte='A text with a smiley '; 
echo str_replace(':-)','<img src="smileys/souriant.png">',$texte);

移除图片的链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<?php 
  $str = ' 
    <a href="http://www.jobbole.com/">jobbole</a>其他字符 
    <a href="http://www.sohu.com/">sohu</a> 
    <a href="http://www.sohu.com/"><img src="http://www.fashion-press.net/img/news/3176/mot_06.jpg" /></a> 
    <br>'; 

  //echo preg_replace("/(<a.*?>)(<img.*?>)(<\/a>)/", '$2', $str);  
  echo preg_replace("/(<a.*?>)(<img.*?>)(<\/a>)/", '\2', $str);  
?>

以上就是15个超实用的php正则表达式,希望对大家的学习有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP基础编程之鬼斧神工的正则表达式-正则表达式初探+常用的正则表达式函数
很多小伙伴在学习php中,正则表达式是一道过不去的坎,初学者在看到正则表达式的复杂符号时,总会一头雾水,丈二的和尚摸不着头脑,冷月在刚刚开始学习正则表达式时也是一头懵。不过,冷月会用由浅入深的讲解正则表达式的基础和简单实战,相信大家看完这篇文章时,会有一定的收获。废话不多说,开启正则表达式的学习吧!let's go!
学长冷月
2020/08/02
6990
PHP 正则表达式
本文主要介绍了 PHP 正则表达式相关的函数。 官方文档:http://php.net/manual/zh/ref.pcre.php int preg_match($pattern, $subject, [ array &$matches ]) int preg_match_all($pattern, $subject, array &$matches) 返回匹配到结果的次数。 preg_replace($pattern, $replacement, $subject) preg_filter($patt
康怀帅
2018/02/28
1.9K0
php面试笔记(6)-php基础知识-正则表达式考点
在面试中,考官往往喜欢基础扎实的面试者,而正则表达式相关的考点,往往是大家容易忽视的一个点,今天冷月就来帮各位小伙伴们梳理一下,在面试中正则表达式相关的注意点。
学长冷月
2020/08/02
3940
PHP学习笔记——正则表达式
1、正则表达式中包含三种元素分别为:量词、元字符、修饰符 2、前导字符串:就是符号前面的一个字符或字符串
行云博客
2020/07/13
1.3K0
正则表达式
共有两种不同的元字符:一种是可以在模式中方括号外任何地方使用的,另外一种 是需要在方括号内使用的。
老雷PHP全栈开发
2020/07/02
3950
十分钟学会正则表达式
想要在计算机语言中使用正则表达式,那么这门计算机语言必须要利用正则引擎去实现相应的正则库。主要的正则引擎分为以下两类:
李海彬
2019/05/08
9040
PHP中正则表达式学习及应用
正则表达式元字符 * 匹配前一个内容的0次1次或多次 . 匹配内容的0次1次或多次,但不包含回车换行 + 匹配前一个内容的1次或多次 ?匹配前一个内容的0次或1次 | 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配) ^ 匹配字符串首部内容 $ 匹配字符串尾部内容 \b 匹配单词边界,边界可以是空格或者特殊符合 \B 匹配除带单词边界意外内容 {m} 匹配前一个内容的重复次数为M次 {m,} 匹配前一个内容的重复次数大于等于M次 {m,n} 匹配前一
wangxl
2018/03/07
1.1K0
PHP.步步为营 | 正则表达式详析 与 诸多运用实例
其中字符串 '/apple/' 就是一个正则表达式, 他用来匹配源字符串中是否存在apple字符串。
凌川江雪
2019/03/19
1.8K0
PHP.步步为营 |  正则表达式详析 与 诸多运用实例
PHP正则表达式,看这一篇就够啦!
不知道你们有没有这个感觉,看正则表达式就像看天文数字一样,什么电话号码、邮箱的正则表达式,上网复制一下粘贴下来就搞定了。完全不知道这写的是什么玩意。后来我自己也想学一下,因为感觉用处还是挺大的。看了看视频,额...真**简单。这里的话如果想看视频学习的话我推荐一下慕课网这门鬼斧神工之正则表达式课程,上手真的太快了。好了,废话不多说,开始搞事情。
Johnson木木
2019/08/21
6730
php使用正则表达式实现替换的方法
了解php使用正则表达式实现替换的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
用户8099761
2023/05/11
2.3K0
php使用正则表达式实现替换的方法
PHP中正则的使用
正则表达式,作为一种快速、便捷的处理字符串的工具,在各种编程语言中都有着广泛的用途,通过在PHP中的一些使用,下面记录一下关于PHP中正则使用的一些技巧。
大江小浪
2018/07/25
3.9K1
PHP中有关正则表达式的函数集锦
之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载。当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有提到),之前根本就不知道有这东西,所以就自己废着劲去学习正则表达式,然后再学习PHP中正则表达式的函数是如何使用的,然后再分析自己要抓取的DOM,最后写自己的正则表达式,正则表达式,写着还可以,不过自己刚写完的正则表达式就可能看不出他是什么意思。   有种调侃正则表达式式的说法,把正则表达式叫做火星文。当第一
lizelu
2018/01/12
1.2K0
正则表达式详解
正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
黄规速
2022/06/30
1.5K0
正则表达式详解
php正则表达式的分组捕获
经过测试,发现php正则表达式获取分组捕获是从$0开始,而平时工作中JavaScript中的正则是$1..$9
meteoric
2018/11/15
1.5K0
PHP正则表达式
1.最左原则:正则表达式总是从目标字符串的最左侧开始,依次匹配,直到匹配到符合表达式要求的部分,或直到匹配目标字符串的结束。 2.最长原则:对于匹配到的目标字符串,正则表达式总是会匹配到符合正则表达式要求的最长的部分;即贪婪模式
黄啊码
2020/05/29
4.7K0
wordpress免插件实现TAG Category自动添加链接
作者:matrix 被围观: 2,145 次 发布时间:2014-01-29 分类:Wordpress 零零星星 | 7 条评论 »
HHTjim 部落格
2022/09/26
8700
【PHP小课堂】PHP中PRGE正则函数的学习
正则表达式的作用想必不用我多说了,大家在日常的开发中或多或少都会接触到。特别是对于一些登录(邮箱、手机号)以及网页爬虫来说,正则表达式就是神器一般的存在。在 PHP 中,有两种处理正则表达式的函数,今天我们就来学习其中的一种。
硬核项目经理
2024/06/25
2990
【PHP小课堂】PHP中PRGE正则函数的学习
正则表达式教程
http://regex.larsolavtorvik.com/ http://tool.oschina.net/regex http://www.rubular.com/ http://zhengze.51240.com/ http://www.kingshang.com/ http://zhengze.51240.com/
老高的技术博客
2022/12/24
2K0
PHP--正则表达式和样式匹配--小记
POSIX 风格的,有些低版本软件支持,目前高版本的有些已经废弃不用了,比如 zend studio 的较新版本.
书童小二
2018/09/03
2K0
相关推荐
PHP基础编程之鬼斧神工的正则表达式-正则表达式初探+常用的正则表达式函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档