php正則表達式
1. php正則表達式[img=**]
按照你的要求編寫的php程序如下(見圖,正則匹配結果取第一和第二捕獲組的數據)
2. PHP正則表達式驗證
$r=preg_match('/^[a-zA-Z0-9]+$/','');
if($r)echo'success';
elseecho'fail';
正則說明:
^表示後面的內容必須在開頭。
$表示前面的內容必須在結尾。
[]表示匹配其中的任意一種字元。
a-z表示從小寫a到小寫z。
+表示之前的內容可以是一個或多個。
其他:
如果允許為空,可以把+改成*,*表示之前的內容可以沒有也可以是一個或多個。
如果要限定長度,可以把+改成{min,max},{min,max}表示之前的內容最小多少位,最大多少位,如{20,40}。
3. 詳解PHP正則表達式:什麼是正則表達式
正則表達式,又稱規則表達式,英文名為Regular Expression,在代碼中常簡寫為regex、regexp或RE,是計算機科學的一個概念。正則表通常被用來檢索、替換那些符合某個模式(規則)的文本。
正則表達式是對字元串(包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為「元字元」))操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。正則表達式是一種文本模式,模式描述在搜索文本時要匹配的一個或多個字元串。
4. PHP正則表達式
'/^\s*{(\w+)}\s*=/' 代表「詞首位置起或有空白{1個或以上的字母串(該串編號1)}或有空白」
替換成,'$\\1=' 含義是"$編號1的串="
5. php正則表達式如何寫
/^(?:(?!<p>)[\s\S])*<p>[\s\S]*<\/p>(?:(?!<\/p>)[\s\S])*$/i
6. 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()使用,
可以把匹配來的字元串當作正則表達式執行;
?>
7. 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";
?>
8. php正則表達式匹配
你是想匹配出所有的文本,然後用替換刪除掉嗎?
<?php
$str = <<<EOT
document.write('<script src= httpx://anab.it/HP/default.php ><\/script>');
document.write('<script src= httpx://focus.07168.net/images/default.php ><\/script>');
EOT;
preg_match_all('/document\.write\(\'<script\s+?src=\s*[^\s]*\s*><\\\\\/script>\'\);/', $str, $matches);
print_r($matches);
?>
9. php正則表達式:
<?
$line='123123234324/File/images/time/5625.jpg"234234sdfsadf';
preg_match_all("/\/File\/images\/([^\"]*)/s",$line,$match);
print_r($match);
?>
顯示為
Array ( [0] => Array ( [0] => /File/images/time/5625.jpg ) [1] => Array ( [0] => time/5625.jpg ) )
$match[1][0] 就是你想要的內容吧 ,File/images/開始,「結束之間的內容 就是中間的內容不包含 雙引號 " 所以用 [^\"]* 來匹配這部分內容
你這里不要用 ^ 和 $ 來表示開頭結尾,因為 /File/ima 和 " 並不是這個字元串的開頭和結尾。
10. 用PHP正則表達式判斷
<?php
$message=$_POST['message'];
if(preg_match('/<script[^>]*>/',$message)){//匹配
echo'error';die;
}
?>