我们要获取字符串中图片地址需要使用preg_match_all正则表达式来获取,替换获取到的内容使用str_replace函数即可了,下面我们看个实例。
例
代码如下 |
复制代码 |
function repalceTA($str){
preg_match_all("/<img(.*)(src="[^"]+")[^>]+>/isU", $str, $arr);
for($i=0,$j=count($arr[0]); $i<$j; $i++){
$str = str_replace($arr[0][$i],"<img " .$arr[2][$i]." />",$str);
}
return $str;
}
|
php中preg_match_all函数
preg_match_all — 执行一个全局正则表达式匹配
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.
在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.
php中str_replace函数
定义和用法
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
语法
str_replace(find,replace,string,count)
个人觉得邮箱正则表达式在javascript与php中一样的规则了,只是语法稍有不同,下面我就把在服务器与客户端邮箱验证代码给大家看看。
邮箱地址验证有很多方法。在浏览器端,js邮箱验证可以通过正则表达式检测。
代码如下 |
复制代码 |
function isEmail(email) {
return /^((([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+(.([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+)*)|((x22)((((x20|x09)*(x0dx0a))?(x20|x09)+)?(([x01-x08x0bx0cx0e-x1fx7f]|x21|[x23-x5b]|[x5d-x7e]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(\([x01-x09x0bx0cx0d-x7f]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))))*(((x20|x09)*(x0dx0a))?(x20|x09)+)?(x22)))@((([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).)+(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])))$/i.test(email);
}
或
function validateEmail(elementValue)
{
var emailPattern = /^[a-zA-Z0-9._]+[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
}
function checkEmail(mail) {
return /^[w-]+(.[w-]+)*@([a-z0-9-]+(.[a-z0-9-]+)*?.[a-z]{2,6}|(d{1,3}.){3}d{1,3})(:d{4})?$/.test(mail);
}
|
调用很简单:
代码如下 |
复制代码 |
if (isEmail('youremail@yourdomain.com')){ console.log(' www.111cn.net This is email is valid'); }View Code
|
如果是进行服务器端验证。像php,则最简单的莫过于:
代码如下 |
复制代码 |
$a='/([w._]{2,10})@(w{1,}).([a-z]{2,4})/';
$b='1412424545645454545454545k@qq.com';
if(preg_match($a,$b)){
echo "电子邮件合法";
}else{
echo "电子邮件不合法啊";
}
|
你要判断一整段字符串是否都匹配就要用断言。如^ $
/^([w._]{2,10})@(w{1,}).([a-z]{2,4})$/
注意头和尾加上了^ $
利用正则去除空格我们可以直接使用preg_replace即可解决了,但是如果要包括回车换行之类的只是写法不一样,下面我给大家整理两个实例。
php正则如何删除空行。
代码如下 |
复制代码 |
$newhtml=preg_replace("/(r?n)\1+/","\1",$newhtml);
echo preg_replace('/($s*$)|(^s*^)/m', '', $str); 完美解决:victory:
$a = 'gdgdga
gagda
faf
fefe
fefe';
echo preg_replace('/(r?n)\1+/',"nn",$a);
|
php清除 回车换行
代码如下 |
复制代码 |
<?php
//php 不同系统的换行
//不同系统之间换行的实现是不一样的
//linux 与unix中用 /n
//MAC 用 /r
//window 为了体现与linux不同 则是 /r/n
//所以在不同平台上 实现方法就不一样
//php 有三种方法来解决
//1、使用str_replace 来替换换行
$str = str_replace(array("/r/n", "/r", "/n"), "", $str);
//2、使用正则替换
$str = preg_replace('//s*/', '', $str);
//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str);
?> |
php替换清除换行符,清除回车换行,去除换行函数,空格,html标签的函数
代码如下 |
复制代码 |
function DeleteHtml($str)
{
$str = str_replace("<br/>","",$str);
$str = str_replace("\t","",$str);
$str = str_replace("\r\n","",$str);
$str = str_replace("\r","",$str);
$str = str_replace("\n","",$str);
return trim($str);
}
|
isU是大小写分的意思,这里s还有则不包括换行符而U是反转了匹配数量的值使其不是默认的重复,大概就是这样了个体我们看文章。
正则后面的/(.*)/isU ,“isU”参数代表什么意思?
这是正则中的修正符.
i是同时查找大小写字母,
s是圆点(.)匹配所有字符,包括换行符.如果没有设定s,则不包括换行符.
U是反转了匹配数量的值使其不是默认的重复,而变成在后面跟上“?”才变得重复
例
preg_match 兼容的正则表达式语法中 b 代表单词边界
所以:下面应该是可以???
代码如下 |
复制代码 |
$a="test,admin,abc";
$b="te";
$exist=preg_match("/b{$b}b/",$a);
if($exist)
{
echo "存在";
}else
{
echo "不存在";
}
|
看一下相关说明
int preg_match ( string pattern, string subject [, array matches [, int flags]] );
preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 false。
示例:
代码如下 |
复制代码 |
<?php
$a = "abcdefgabcdefaaag";
preg_match('|abc([a-z]+)g|isu',$a,$out1);
preg_match_all('|abc([s]+)g|isu',$a,$out2);
echo "<pre>";
print_r($out1);
print_r($out2);
echo "</pre>";
?>
|
写法:
使用双引号时和单引号的不同
代码如下 |
复制代码 |
<?php
preg_match_all("/href="(.*)"/isu",$contents,$out);
preg_match_all('|href="(.*)"|isu',$contents,$out);
?>
|
有一个项目要获取页面中所有img标签中的图片地址,这里我们使用到了preg_match_all正则函数,然后看我下面的一些参数即可实现了。
例
代码如下 |
复制代码 |
<?php
$ext = 'jpg|jpeg|gif|bmp|png';//罗列图片后缀从而实现多扩展名匹配
$str = '<p><img title="湛蓝天空" alt="湛蓝天空" onload="ResizeImage(this,860)"" width=100% src="http://你的域名/uploads/allimg/131121/1-1311210925190-L.jpg" /></p><p><img title="湛蓝天空" alt="湛蓝天空" onload="ResizeImage(this,860)"" width=100% src="http://你的域名/uploads/allimg/130814/1-130Q42211190-L.jpg" /></p><p><img title="湛蓝天空" alt="湛蓝天空" onload="ResizeImage(this,860)"" width=100% src="http://你的域名/uploads/allimg/130923/1-130923233I30-L.jpg" /></p>';
$img_list = array(); //这里存放结果map
$img_list = img_match($str,$ext);
print_r($img_list); //查看结果变量
/*
* $str,要进行处理的内容
* $ext,要匹配的扩展名
*/
function img_match($str,$ext){
$list = array(); //这里存放结果map
$c1 = preg_match_all('/<imgs.*?>/', $str, $m1); //先取出所有img标签文本
for($i=0; $i<$c1; $i++) { //对所有的img标签进行取属性
$c2 = preg_match_all('/(w+)s*=s*(?:(?:(["'])(.*?)(?=2))|([^/s]*))/', $m1[0][$i], $m2); //匹配出所有的属性
for($j=0; $j<$c2; $j++) { //将匹配完的结果进行结构重组
$list[$i][$m2[1][$j]] = !empty($m2[4][$j]) ? $m2[4][$j] : $m2[3][$j];
}
}
return $list;
}
?>
|
效果如下
再扯蛋一下,还是正则取指定字符中的内容
代码如下 |
复制代码 |
$str = preg_match_all('/(original-title=).*?(>)/is', $str,$array);
|
很简单吧。
标签:[!--infotagslink--]