① php 正則替換 全、半形空格和全形逗號替換為半形逗號
/,|\s/ig 這個是正則,正則只是做查找功能而已,沒替換,你替換要用你自己的語言替換。例如:你的是java,str.replaceAll(",|\\s",",");
② 求PHP正則表達式,匹配[所有標點符號|數字|大小寫字母|其他在書名上應該橫過來的字元]
你的意思是只要漢字嗎? 你說的也不是很清楚 猜猜應該是只要漢字吧
preg_match("/^[\u4e00-\u9fa5]+$/",$str)) //utf8編碼
③ 求PHP 的正則表達式 大全
匹配中文字元的正則表達式: [\u4e00-\u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表達式就好辦了 匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 評註:可以用來計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1) 匹配空白行的正則表達式:\n\s*\r 評註:可以用來刪除空白行 匹配HTML標記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 評註:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於復雜的嵌套標記依舊無能為 匹配首尾空白字元的正則表達式:^\s*|\s*$ 評註:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表達式 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 評註:表單驗證時很實用 匹配網址URL的正則表達式:[a-zA-z]+://[^\s]* 評註:網上流傳的版本功能很有限,上面這個基本可以滿足需求 匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 評註:表單驗證時很實用 匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7} 評註:匹配形式如 0511-4405222 或 021-87888822 匹配騰訊QQ號:[1-9][0-9]{4,} 評註:騰訊QQ號從10000開始 匹配中國郵政編碼:[1-9]\d{5}(?!\d) 評註:中國郵政編碼為6位數字 匹配身份證:\d{15}|\d{18} 評註:中國的身份證為15位或18位 匹配ip地址:\d+\.\d+\.\d+\.\d+ 評註:提取ip地址時有用 匹配特定數字: ^[1-9]\d*$ //匹配正整數 ^-[1-9]\d*$ //匹配負整數 ^-?[1-9]\d*$ //匹配整數 ^[1-9]\d*|0$ //匹配非負整數(正整數 + 0) ^-[1-9]\d*|0$ //匹配非正整數(負整數 + 0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負浮點數 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負浮點數(正浮點數 + 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(負浮點數 + 0) 評註:處理大量數據時有用,具體應用時注意修正 匹配特定字元串: ^[A-Za-z]+$ //匹配由26個英文字母組成的字元串 ^[A-Z]+$ //匹配由26個英文字母的大寫組成的字元串 ^[a-z]+$ //匹配由26個英文字母的小寫組成的字元串 ^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字元串 ^\w+$ //匹配由數字、26個英文字母或者下劃線組成的字元串 /http:\/\/(.*)\//i //匹配外部鏈接地址
滿意請採納
④ PHP中,一串UTF8中文字元,要將其中的全形問號替換為空,正則表達式應該怎麼寫
這種簡單的替換用不著正則表達式,可以用字元串替換函數
str_replace('?','',$str);
⑤ 請問 php 正則中的這些是什麼編碼呢
一:[\x81-\xfe]格式的正則:
$s=preg_replace('/^([\x81-\xfe][\x40-\xfe])*/','0',$neirong); 這裡面的大多是日韓文字
二:x{4e00}格式的正則:
preg_match("/^[\x{4e00}-\x{9fa5}]{1,4}/u",$str); 這裡面是匹配中文;
——————————————————————————
這些字元集尤其是日文字元集的各種字、標點以及特殊符號的時候有所幫助。
UTF8
[\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}
UTF16
[\x00-\xd7][\xe0-\xff]|[\xd8-\xdf][\x00-\xff]{2}
JIS
[\x20-\x7e]|[\x21-\x5f]|[\x21-\x7e]{2}
SJIS
[\x20-\x7e]|[\xa1-\xdf]|([\x81-\x9f]|[\xe0-\xef])([\x40-\x7e]|[\x80-\xfc])
EUC_JP
[\x20-\x7e]|\x81[\xa1-\xdf]|[\xa1-\xfe][\xa1-\xfe]|\x8f[\xa1-\xfe]{2}
EUC_JP標點符號及特殊字元
[\xa1-\xa2][\xa0-\xfe]
EUC_JP全形數字
\xa3[\xb0-\xb9]
EUC_JP全形大寫英文
\xa3[\xc1-\xda]
EUC_JP全形小寫英文
\xa3[\xe1-\xfa]
EUC_JP全形平假名
\xa4[\xa1-\xf3]
EUC_JP全形片假名 [color=Red]2007-03-12 15:00更新[/color]
\xa3[\xb0-\xb9]|\xa3[\xc1-\xda]|\xa5[\xa1-\xf6][\xa3][\xb0-\xfa]|[\xa1][\xbc-\xbe]|[\xa1][\xdd]
EUC_JP全形漢字 [color=Red]2007-03-12 15:06更新[/color]
[\xb0-\xcf][\xa0-\xd3]|[\xd0-\xf4][\xa0-\xfe]|[\xB0-\xF3][\xA1-\xFE]|[\xF4][\xA1-\xA6]|[\xA4][\xA1-\xF3]|[\xA5][\xA1-\xF6]|[\xA1][\xBC-\xBE]
Big5
[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|[\xa1-\xfe])
GBK
[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]
GB2312漢字
[\xb0-\xf7][\xa0-\xfe]
GB2312半形標點符號及特殊符號
\xa1[\xa2-\xfe]
GB2312羅馬數組及項目序號
\xa2([\xa1-\xaa]|[\xb1-\xbf]|[\xc0-\xdf]|[\xe0-\xe2]|[\xe5-\xee]|[\xf1-\xfc])
GB2312全形標點及全形字母
\xa3[\xa1-\xfe]
GB2312日文平假名
\xa4[\xa1-\xf3]
GB2312日文片假名
\xa5[\xa1-\xf6]
補充:
GB18030
[\x00-\x7f]|[\x81-\xfe][\x40-\xfe]|[\x81-\xfe][\x30-\x39][\x81-\xfe][\x30-\x39]
[color=Red]2007-03-12 21:35 補充[/color]
日文半形空格
\x20
SJIS全形空格
(?:\x81\x81)
SJIS全形數字
(?:\x82[\x4f-\x58])
SJIS全形大寫英文
(?:\x82[\x60-\x79])
SJIS全形小寫英文
(?:\x82[\x81-\x9a])
SJIS全形平假名
(?:\x82[\x9f-\xf1])
SJIS全形平假名擴展
(?:\x82[\x9f-\xf1]|\x81[\x4a\x4b\x54\x55])
SJIS全形片假名
(?:\x83[\x40-\x96])
SJIS全形片假名擴展
(?:\x83[\x40-\x96]|\x81[\x45\x5b\x52\x53])
EUC_JP全形空格
(?:\xa1\xa1)
EUC半形片假名
(?:\x8e[\xa6-\xdf])
——————————————————————————
下面是utf-8編碼的例子:
$str = "漢字";
if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {
print("該字元串全部是中文");
} else {
print("該字元串不全部是中文");
}
下面的例子包含gbk,gb2312的例子:
<?php
$action = trim($_GET['action']);
if($action == "sub")
{
$str = $_POST['dir'];
//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312漢字字母數字下劃線正則表達式
if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8漢字字母數字下劃線正則表達式
{
echo "<font color=red>您輸入的[".$str."]含有違法字元</font>";
}
else
{
echo "<font color=green>您輸入的[".$str."]完全合法,通過!</font>";
}
}
?>
⑥ PHP中字元串正則式處理:去除字元串末尾的若干個空格
查找:[\u0026-\u002f\u003a\u003b]
替換為空
原理:&的ascii為0x26,其至0x2f之間都是符號,0x30~0x39是數字0~9,0x3a和0x3b是符號,分號是0x3b,所以,你描述的符號就是兩個連續區間,後一個區間只有兩個字元,總體上也可表示為一個連續字元區間和兩個散點字元,如上即是。
⑦ php如何判斷是字元串全形還是半形
第一步:新建程序
使用Dreamweaver或記事本新建一個PHP程序,這是所有開發必須經過的開始,然後輸入測試段代碼(Hello World!),並運行。
第二步:輸入英文分號並運行
為了便於後面的比較,在編輯器新增一個<div>標簽並做對齊,輸入文字:我是英文PHP的分號(;),並在瀏覽器中運行
第三步:對比輸入中文分號再運行
接著輸入一段文字,我是中文PHP的分號(;),在瀏覽器中運行,並作比較,中文分號比英文分號更大更寬
第四步:輸入英文半形並運行
在編輯器中新增一個<div>標簽,輸入文字:我是PHP的半形寫法:php,並運行,並記錄
第五步:全半形及中英文切換
很多非專業的人不會切換全半形,切換全半形方式為Shift+Space鍵盤,也可以點擊輸入法切換
第六步:輸入英文全形再運行
同理,在編輯器中輸入文字:我是PHP全形寫法:php,並運行,比較全半形的區別(註:全形只在英文小寫字母才有作用),全形字元寬度明顯大於半形。
第七步:對比全形和半形
全形字元佔位大於半形。
第八步:對比中文和英文
英文符號再大小以及佔位寬度比中文符號小
⑧ PHP中文文字正則替換,並將匹配的中文文字加粗
<?php
$str = "中文123美麗abc開心。?我們";
echo preg_replace('#(?:(?![,。?])[xC0-xFF][x80-xBF]+)+#','<b>$0</b>',$str);
//(?:[xC0-xFF][x80-xBF]+) 單個中文字元,不需要引用,因此使用?:
//(?![,。?]) 排除中文標點符號,這里要寫入中文標點
//(?:(?![,。?])[xC0-xFF][x80-xBF]+) 排除中文標點符號後的中文字元
//(?:[xC0-xFF][x80-xBF]+)+ 1個以上的中文字元
//結果 <b>中文</b>123<b>美麗</b>abc<b>開心。?我們</b>
?>
⑨ 有關php 正則表達式替換的問題
$str = "哈哈@abc,@中國,@中國china,另一個哈哈@結尾沒有逗號的";
$pattern = "/(@([^,,]+))([,,]?)|(@(.+))$/i"; //匹配以全形逗號或者半形逗號或者是串尾的
$replacement = '<a href="/id/$2">$1</a>$3';
$str = preg_replace($pattern, $replacement, $str);
echo $str;
⑩ php正則表達式問題
/後邊的是修正符
其中i是不區分大小寫
修正符很有用的
例子:
<?php
//標記在整個模式之外;
例://$mode="/\bis\b/U",其中U在外面;
//修正符:i 不區分大小寫的匹配;
//如:"/abc/i"可以與abc或aBC或ABc等匹配;
//修正符:m 將字元串視為多行,不管是那行都能匹配;
例://模式為:$mode="/abc/m";
//要匹配的字元串為:$str="bcefg5e\nabcdfe"
//注意其中\n,換行了;abc換到了下一行;
//$str和$mode仍可以匹配,修正符m使得多行也可匹配;
//修正符:s 將字元串視為單行,換行符作為普通字元;
例://模式為:$mode="/pr.y/";
//要匹配字元串為:$str="pr\ny";
//兩者不可匹配; . 是除了換行以外的字元可匹配;
//修改下模式為:$mode="/pr.y/s";
//其中修正符s將\n視為普通字元,即不是換行;
//最後兩者可以匹配;
//修正符:x 將模式中的空白忽略;
//修正符:A 強制從目標字元串開頭匹配;
例://$mode="/abc/A";
//可以與$str="abcsdfi"匹配,
//不可以與$str2="sdsdabc"匹配;
//因為$str2不是以abc開頭;
//修正符:D 如果使用$限制結尾字元,則不允許結尾有換行;
例://模式為:$mode="/abc$/";
//可以與最後有換行的$str="adshabc\n"匹配;
//元子符$會忽略最後的換行\n;
//如果模式為:$mode="/abc/D",
//則不能與$str="adshabc\n"匹配,
//修正符D限制其不可有換行;必需以abc結尾;
//修正符:U 只匹配最近的一個字元串;不重復匹配;
例:
如模式為:
$mode="/a.*c/";
$str="abcabbbcabbbbbc" ;
preg_match($mode,$str,$content);
echo $content[0]; //輸出:abcabbbcabbbbbc;
//如果$mode="/a.*c/";變成$mode="/a.*c/U";
// 則只匹配最近一個字元串,輸出:abc;
//修正符:e 配合函數preg_replace()使用,
可以把匹配來的字元串當作正則表達式執行;
?>