首页 > 编程技术 > php

php正则表达式过滤空格 换行符 回车

发布时间:2016-11-25 17:42

我整理了几个比较适合的实例了,对于它们我们是有很多站长都测试过并用过了,不过文章最后我的总结也是生重要的哦,至于原因我也说不上了,因为chr是ascii编码了所以有时浏览器会自动转成ascii,特别像ff浏览器就是这样的。

一,下例可以去除额外空白

 代码如下 复制代码

<?php
$str = " This line  containstliberal rn use of   whitespace.nn";
// First remove the leading/trailing whitespace
//去掉开始和结束的空白  www.111cn.net
$str = trim($str);
// Now remove any doubled-up whitespace
//去掉跟随别的挤在一块的空白
$str = preg_replace('/s(?=s)/', '', $str);
// Finally, replace any non-space whitespace, with a space
//最后,去掉非space 的空白,用一个空格代替
$str = preg_replace('/[nrt]/', ' ', $str);
// Echo out: 'This line contains liberal use of whitespace.'
echo "<pre>{$str}</pre>";
?>

二,替换换行符
//php 有三种方法来解决

 代码如下 复制代码

//1、使用str_replace 来替换换行
$str = str_replace(array("rn", "r", "n"), "", $str);

//2、使用正则替换
$str = preg_replace('//s*/', '', $str);

//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str);


代码如下:

 代码如下 复制代码
 
/*
* 获得用户操作系统的换行符,n
* @access public
* @return string
*/
function get_crlf()
{
if (stristr($_SERVER['HTTP_USER_AGENT'], 'Win'))
{
$the_crlf = 'rn';
}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mac'))
{
$the_crlf = 'r'; // for old MAC OS
}
else
{
$the_crlf = 'n';//权重大一点 www.111cn.net
}
return $the_crlf;
}

注意:在前台页面显示的时候,用nl2br使换行变成<br>

三,替换回车

 代码如下 复制代码

    <?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);  
    ?> 

一聚教程小编提醒你,有时我们还需要注意像textarea中的回车换行并不是/r/n之类的而是需要chr(32),chr(13)这样才可以替换的哦。

一般情况下用户名我们只能使用数字字母之类的但有时可能可以有中文,数字之类的,下面本文章总结了一些利用正则来验证用户名的例子。

例子,字母、数字和汉字

 代码如下 复制代码

if(preg_match("/[ '.,:;*?~`!@#$%^&+=)(<>{}]|]|[|/|\|"||/",$user)){
echo '不要在名字里面整些特殊符号,请只使用字母、数字和汉字,当然要你的浏览器要选简体中文GB2312哟,千万不要选繁体、中文HZ等。返回修改后,再来,我等你哟!';
exit();
}

例子,全字母

 代码如下 复制代码

<?php 

if (mb_ereg("^[w-.]{1,32}$", $str)) { 
echo 'yes'; 
} else { 
echo 'no'; 

?>

附一些常用正则

只能以数字或字母开头和结尾 用户名长度为4~18个字符

 代码如下 复制代码
^[a-za-z0-9]{1}[a-za-z0-9|-|_]{2-16}[a-za-z0-9]{1}$

用户名为大写字母小写字母或下划线,并以字母开头,长度为6-20

 代码如下 复制代码
^[a-za-z][wd_]{5,19}

用户名:包括英文小写、汉字、数字、下划线,不能全部是数字,下划线不能在末尾

 代码如下 复制代码
/^[a-z0-9_u4e00-u9fa5]+[^_]$/g
utf-8下
preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a);
gbk下:
preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a)

可有中文的用户名验证

 代码如下 复制代码
[a-za-z0-9][u4e00-u9fa5]
个人觉得邮箱正则表达式在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_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)

利用正则去除空格我们可以直接使用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);
}

标签:[!--infotagslink--]

您可能感兴趣的文章: