1. php 正则表达式 只能出现一次至少一次
$str='abcdA';
echo'<metacharset="UTF-8">';
if(!sameStr($str,true)){
echo'存在相同字母(不区分大小写)'.'<br/>';
}else{
echo'不存在相同字母(不区分大小写)'.'<br/>';
}
if(!sameStr($str)){
echo'存在相同字母(区分大小写)'.'<br/>';
}else{
echo'不存在相同字母(区分大小写)'.'<br/>';
}
/**
*@param$str需查找字符串
*@parambool|false$type查找类型:true=>不区分大小写false=>区分大小写(默认)
*@returnbooltrue=>不存在相同字母false=>存在相同字母
*/
functionsameStr($str,$type=false){
$rs='/[a-z]/'.($type?'i':'');
preg_match_all($rs,$str,$res);
foreach($res[0]as$val){
$rs="/[$val]/".($type?'i':'');
preg_match_all($rs,$str,$result);
if(count($result[0])>1){
returnfalse;
}
}
returntrue;
}
2. 用PHP正则判断 只能输入 中文、韩文、日文、因为(大小写) 除外的一律禁止的。 有谁可以么
/^[\x{4e00}-\x{9fa5}\x{3130}-\x{318F}\x{0800}-\x{4e00}a-zA-Z]+$/u
别忘了最后那个修正符“ u ”,少了它可不行。
再补充下,要使用这个正则,你的网页编码必须是UTF-8,如果是GB2312,那不要想了。
3. php正则表达式截取HTML标签中的内容
header('content-type:text/html;charset=utf-8');
$str='<li><ahref="/news1397/"title="1827年3月5日意大利物理学家伏打逝世">1827年3月5日意大利物理学家伏打逝世</a></li>
<li><ahref="/news1398/"title="1871年3月5日波兰女革命家卢森堡诞辰">1871年3月5日波兰女革命家卢森堡诞辰</a></li>
<li><ahref="/news1399/"title="1886年3月5日董必武诞辰">1886年3月5日董必武诞辰</a>(图)</li>';
preg_match_all('/<a.*>(.*)</a>/im',$str,$matches);
var_mp($matches[1]);
4. php 正则 去掉所有标调符号,数字 和字母,只留空格分隔的中文
<?php
$str="*/123abcd只留sa";
preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$matches);
$str=join('',$matches[0]);
echo$str;
?>
输出“只留”
完善一下,以上适用于UTF8编码,如果是GBK的则需要转码,如下。
<?php
$str="*/123abcd只留sa";
$str=mb_convert_encoding($str,'UTF-8','GB2312');
preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$matches);
$str=join('',$matches[0]);
echo$str;
?>
5. 几个php正则表达式结合switch输出的例子
<?php
header ( "Content-Type: text/html; charset=UTF-8" );
$x = "";
if(!empty($_GET['action'])){
$x = $_GET['action'];
}
switch ($x){
case "email":
$email_address = $_POST["email_address"];
$pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
// $pattern = "/^([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i";
if ( preg_match( $pattern, $email_address ) ){
$reply1 = "您输入的电子邮件地址合法<br /><br />\n";
$user_name = preg_replace( $pattern ,"$1", $email_address );
$domain_name = preg_replace( $pattern ,"$2", $email_address );
$reply1 .= "用户名:".$user_name."<br />\n";
$reply1 .= "域名:".$domain_name."<br />\n\n";
}