15个PHP开发者常用的正则表达式

什么是正则表达式?

    正则表达式(也称为正则表达式或正则表达式)是搜索一个给定的字符串中的模式。 这些搜索方式是使用一种特殊的语法的正则表达式分析器理解写的。 对于很多开发人员来说,正则表达式似乎是很难学习和使用。 其实并没有想象中的那么难所以在使用PHP正则表达代码前,我们先来看看基本的正则表达规则。

 

正则表达式的基础知识

 

正则表达式 描述
字符串“字形”
^字形 “字形”在字符串的开头
字形$ “字形”在字符串的末尾
^字形$ “字形”时,它是单独的一个字符串
[ABC] 一,b或c
[AZ] 任意小写字母
[^ AZ] 任何字符不是大写字母
(GIF | JPG) 可以匹配“GIF”或“JPEG”
[AZ] + 一个或多个小写字母
[0-9 - 。] 适用纽约州数,点,或减号
^ [A-ZA-Z0-9_] {1​​,} $ 至少一个字母,数字或_的任何单词
([WX])([YZ]) WY,WZ,XY,XZ或
[^ A-ZA-Z0-9] 任何符号(非数字或字母)
([AZ] {3} | [0-9] {4}) 匹配三个字母或四个数字

 

下面让我们学习下php开发者常用的正则表达式的代码:

 

从字符串中删除特殊字符

有用的PHP正则表达式从字符串中删除特殊字符。

$value = preg_replace("/[^A-Za-z0-9]/","",$value);

验证用户名

这是非常方便的PHP正则表达式来验证用户名,由字母数字(包括AZ,az ,0-9),下划线,并具有最小的5个字符和最大20字符。 您也可以在最小的字符和最大字符更改为任意数量的你喜欢的。

 

$username = "user_name12";
if (preg_match('/^[a-z\d_]{5,20}$/i', $username)) {
    echo "Your username is ok.";
} else {
    echo "Wrong username format.";
}

 

Source

创建一个YouTube的缩略图

 

从YouTube视频URL创建一个YouTube缩略图的URL。

function youtube_video_thumbnail($url,$index=0){
    if(preg_match('/^[^v]+v.(.{11}).*/',$url,$matches)){
        return 'http://img.youtube.com/vi/'.$matches[1].'/'.$index.'.jpg';
    }elseif(preg_match('/youtube.com\/user\/(.*)\/(.*)$/',$url,$matches)){
        return 'http://img.youtube.com/vi/'.$matches[2].'/'.$index.'.jpg';
    }else{
        return false;
    }
}

Source

 

替换域名的URL并创建该链接

preg_replace("/http:\/\/([^\/]+)[^\s]*/", "$1", $text);

Source

为无alt标记的图片添加ALT

function add_alt_tags($content)
{
global $post;
preg_match_all('/<img (.*?)\/ >/', $content, $images);
if(!is_null($images))
{
foreach($images[1] as $index => $value)
{
if(!preg_match('/alt=/', $value))
{
$new_img = str_replace('<img', '<img alt="'.get_the_title().'"', $images[0][$index]);
$content = str_replace($images[0][$index], $new_img, $content);
}
}
}
return $content;
}
add_filter('the_content', 'add_alt_tags', 99999);

Source

EMAIL地址自动生成邮寄链接

$string = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href="mailto:\\1">\\1</ a>', $text);
echo $string;

Source

审查和过滤非法词汇的正则表达式

该函数使用正则表达式的力量来检查一些不好的或者非法词汇,还提供了该词汇的相关别名。

function filtrado($texto, $reemplazo = false)
{
$filtradas = 'ding, shit'; //Define here your words to censor separated by comma

$f = explode(',', $filtradas);
$f = array_map('trim', $f);
$filtro = implode('|', $f);

return ($reemplazo) ? preg_replace("#$filtro#i", $reemplazo, $texto) : preg_match("#$filtro#i", $texto) ;
}

Source

 

电话号码验证

使用正则表达式验证电话号码的一个简单的PHP正则表达式

$string = "(232) 555-5555";
if (preg_match('/^\(?[0-9]{3}\)?|[0-9]{3}[-. ]? [0-9]{3}[-. ]?[0-9]{4}$/', $string)) {
echo "example 2 successful.";
}

Source

内替换所有的href链接

$pattern = '/(?<=href\=")[^]]+?(?=")/';
$replacedHrefHtml = preg_replace($pattern, $replacement, $html);

Source

 

验证电子邮件的正则表达式

这是一个真棒PHP的正则表达式用以验证电子邮件完整和合法性。

$regex = "([a-z0-9_.-]+)". # name
			"@". # at
			"([a-z0-9.-]+){2,255}". # domain & possibly subdomains
			".". # period
			"([a-z]+){2,10}"; # domain extension 
		$eregi = eregi_replace($regex, '', $email);
		$valid_email = empty($eregi) ? true : false;

Source

 

IP地址验证

$string = "255.255.255.255";
if (preg_match(
'/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',
$string)) { 
	echo "IP address is good.";
}

Source

 

 

邮编验证

这是一个用PHP的正则表达式:验证由9位数组成的的邮政编码是否有效的简单方法。

$string = "12345-1234";
if (preg_match('/^[0-9]{5}([- ]?[0-9]{4})?$/', $string)) { 
	echo "zip code checks out";
}

Source

高亮显示单词的内容

 

$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;

Source

 

从特定的URL中提取域名

通过使用这个正则表达式,你可以从一个prticular URL中提取域名。

$url = "http://phpzag.com/index.html";
preg_match('@^(?:http://)?([^/]+)@i', $url, $matches);
$host = $matches[1];
echo $host;

Source

验证域

这是非常有用的PHP正则表达式来检查提供的URL是否是有效还是无效。

$url = "http://phpzag.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.";
}

Source

用标题的英文单词自动创建URL

您可以从标题字符串创建用户友好URL。 这个正则表达式函数会替换掉连字符单词之间的空格。

function create_slug($string){
   $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
   return $slug;
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'

Source

添加到HTTP网址

我们需要接受一些URL作为输入,但用户没有添加包含http://给它一些时间,这段代码将添加包含http://的URL,如果它不存在。

if (!preg_match("/^(http|https|ftp):/", $_POST['url'])) {
   $_POST['url'] = 'http://'.$_POST['url'];
}

在转换字符串的URL转换为超链接

这确实是一个有用的功能是把一个字符串转换成可点击的超链接中的URL和有效的电子邮件地址。

function makeLinks($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)',
'\1', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)',
'\1\2', $text);
$text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})',
'\1', $text);

return $text;
}

本文由帮客之家编译,转载请保留此内容

本文地址:http://kansha.bkjia.com/translate/89.html 

 

英文原文地址:http://www.phpzag.com/15-regular-expressions-for-php-developers/

kansha.bkjia.com true http://kansha.bkjia.com/translate/89.html NewsArticle 什么是正则表达式? 正则表达式(也称为正则表达式或正则表达式)是搜索一个给定的字符串中的模式。 这些搜索方式是使用一种特殊的语法的正则表达式分析器理解写的。 对于很多...