php用正則
『壹』 php 正則表達式
代碼如下:
<?php
$str=file_get_contents('http://abc.com/aaa.php');
if (preg_match('|<input name="a" type="hidden" value="([^"]*)"/>|', $str, $reg)) $out=$reg[1];
else $out='';
echo "$out<br>\n";
?>
『貳』 php正則表達式是什麼
是指一個用來描述或者匹配一系列符合某個句法規則的字元串的單個字元串。
正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。
給定一個正則表達式和另一個字元串,我們可以達到如下的目的:
1. 給定的字元串是否符合正則表達式的過濾邏輯(稱作「匹配」);
2. 可以通過正則表達式,從字元串中獲取我們想要的特定部分。
正則表達式的特點是:
1. 靈活性、邏輯性和功能性非常的強;
2. 可以迅速地用極簡單的方式達到字元串的復雜控制。
3. 對於剛接觸的人來說,比較晦澀難懂。
由於正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表達式來處理文本內容。
『叄』 求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正則表達式判斷
<?php
$message=$_POST['message'];
if(preg_match('/<script[^>]*>/',$message)){//匹配
echo'error';die;
}
?>
『伍』 PHP正則表達式
代碼如下:
<?php
$text='
<div id="985665948" class="sign_bar2">
<div class="group_user">
<div class="group_logo"><a target="_blank" href="#t178414.html"><img src="" height="40" alt="問問團隊" width="40"></img></a></div>
<div class="group_info"><a target="_blank" href="#t178414.html">SD敢達團隊</a>
<a target="_blank" href="#t178414.html"><div class="ico_group_top5" title="團隊信用排行"></div></a><a target="_blank" href="#t178414.html"><div class="ico_group_lv1" title="初級團"></div></a>
</div>
</div>';
preg_match('/<div id="985665948" class="sign_bar2">([\s\S]*)<\/div>/', $text, $matches);
$text = str_replace($matches[1],'',$text);
echo $text;
?>
測試過可以。
另外preg_replace好像沒有替換子模式的功能,所以採用了(preg_match+str_replace)的組合,誰知道用preg_replace實現請告知,謝謝。
另外如果是有多個替換,需要使用preg_match_all()。
『陸』 php正則表達式如何寫
後面參數字元串替換沒有規律可循呢,比如ZL對應的field=CDH
第一個10對應zlId=1,第二個3對應cdhId=10。沒什麼規律的話直接替換好點吧?我覺得啊
或者能再多點例子也好
『柒』 php 怎麼使用正則
/**
通用正則
參數:
正則,模式,字元串
說明:
通用正則處理函式,可以用來獲取,替換,檢查內容
返回:
匹配到的內容或Boolean值
用法:
使用之前先把引號之類的替換乾凈
$html=Fun::_file_get_contents('');$html=strtr($html,array("'"=>'','"'=>''));
var_mp(Fun::Preg("<title>(.*)<",'one',$html)); //抓取一條內容
var_mp(Fun::Preg("/ href=(.[^> ]*)/i",'arr',$html)); //抓取內容列表
echo Fun::Preg("abc|cde",'rep',$html); //把內容替換掉
if(Fun::Preg(" href=.[^'\" ]*",'chk',$html)){ //判斷是否存在
echo 'true';
}
//匹配所有的href
$href=Fun::Preg('/ href=["|\']?([^>"\' ]+)["|\']?/i','arr',$html);
/**/
public static function Preg($r,$t,$html){
switch(strtolower($t)){
case 'arr':
preg_match_all("{$r}",$html,$arr,PREG_PATTERN_ORDER);
return $arr;
break;
case 'one':
preg_match("/{$r}/iU",$html,$arr);
return $arr;
break;
case 'rep':
return preg_replace("/{$r}/i",'',$html);
break;
case 'chk':
return preg_match("/{$r}/iU",$html);
break;
default:
return FALSE;
}
}
『捌』 php 正則表達式
<?php
$str1="YourPassword";//你的密碼
$mode="/S{6,16}/";//匹配模式
if(preg_match($mode,$str1,$content)){
echo"Yourinput:".$str1."canmatch".$mode.".Content:".$content[0];
if($content[0]===$str1){
echo"<br>Yes.";
}else{echo"<br>NO.";}//確認不含一個空白符(空格、換號、製表符)
}
elseecho"Yourinput:".$str1."canNOTmatch.".$mode;
//用戶名的那個我再研究下
?>
『玖』 php正則表達式
這里涉及到正則表達式中得子串捕獲的概念。php中的正則表達式使用的是pcre正則庫,因此使用方式上和pcre是相同的,只不過是為了使用方便封裝了一起便捷的操作而已。preg_match函數和preg_match_all函數用於在php中進行正則表達式的相關處理。下面看下preg_match函數的定義:intpreg_match(string$pattern,string$subject[,array&$matches])在$subject中查詢$pattern,如果找到則把匹配的字元串存儲在$matches中。$matches[0]中存放整個匹配的字元串,$matches[i]中存放匹配到的第i個捕獲子串。題目的解決方法:$pattern="/^NAME(.*){$/";preg_match($pattern,$string,$match);echo$match[1];//$match[1]為提取的NAME和{之間的內容。關於捕獲組信息($match的信息)詳情,可以參考文檔:http://wangpan..com/share/link?shareid=2520440522&uk=3053825526
『拾』 php 正則表達式中的 .* 表示什麼意思
是非貪婪模式
.*會匹配後面的一切字元,就是到結束的意思
加?後就是不貪婪模式,這時要看?後邊的字元是什麼了,如.*?"的意思是遇到雙引號則匹配結束