當前位置:首頁 » 編程語言 » php特殊字元正則表達式

php特殊字元正則表達式

發布時間: 2022-07-10 15:32:24

1. php函數preg_match_all正則表達式的基本使用詳細解析

了解正則表達式之前,須要掌握一些常用的正則表達式的基礎知識,這些如果能記得最好記得,記不住須要用的時候能查到就行,就多個特殊字元,所以說正則表達式玩的就是特殊,具體大家可以查看更加細致的說明。
preg_match_all函數具體說明大家可以查看PHP手冊,本文運用
preg_match_all用於測試正則表達的效果。
實例代碼:
復制代碼
代碼如下:
$html
=
'<div
id="biuuu">jb51.net</div><div
id="biuuu_2">jb51.net2</div><div
id="biuuu_3">jb51.net3</div>';
實例要求:分別將每一個DIV元素的ID和內容取出,如biuuu,biuuu_2,biuuu_3,jb51.net,jb51.net2和jb51.net3(一些常用的抓站要領就是這樣匹配的)
分析:字元串是一個基本的HTML元素,每一個DIV元素對應該一個ID和內容,並且是獨立的,首先考慮如何
取出一個DIV內的ID值和內容,如:jb51.net,然後匹配其它類似的元素。一個DIV中須要取出兩個值,也就是兩個匹配的表達式,第一個表達式用於匹配ID值(biuuu),第二個表達式用於匹配ID的內容(jb51.net),正則表達式常用的表達式運用小括弧,那麼前面的元素將會變成如下形式:
<div
id="(biuuu)">(jb51.net)</div>
<div
id="(表達式1)">(表達式2)</div>
好,運用如上小括弧把須要匹配的區域執行
了劃分,接下來就是如何
匹配各個表達式內的內容,我們猜想一個ID可能是字母,數字或下劃線,那這就變得基本了,運用中括弧就可以實現,如下:
表達式1:[a-zA-Z0-9_]+
(表示匹配大小寫字母,數字和下劃線)
那如何
匹配表達式2,因為ID的內容可以是任意的字元,但是要留心,不能匹配<或>字元,因為如果匹配這兩個字元將會把後面運用的DIV都匹配出來,因此須要排除這兩個字元開始的元素,也就是不匹配以<或>字元,如下:
表達式2:[^<>]+
(表示不匹配<和>字元)
這樣,須要匹配的子表達式就實現了,但是還要須要匹配一個
的表達式,要領如下:
表達式:/
'\"(表達式1)\"'>(表達式2)<\/div>/
留心其中的雙引號"和/須要運用
\轉義字元轉義,然後把前面兩個表達式放進去,
如下:
'\"([a-z0-9_]+)\"'>/<div
id=\"([a-z0-9_]+)\">([^<>]+)<\/div>/
這樣就實現一個匹配每一個DIV元素ID值和內容的正則表達式,然後運用
preg_match_all函數測試如下:
復制代碼
代碼如下:
$html
=
'<div
id="biuuu">jb51.net</div><div
id="biuuu_2">jb51.net2</div><div
id="biuuu_3">jb51.net3</div>';
preg_match_all('/<div\sid=\"([a-z0-9_]+)\">([^<>]+)<\/div>/',$html,$result);
var_mp($result);
結果:
復制代碼
代碼如下:
array(3)
{
[0]=>
array(3)
{
[0]=>
string(30)
"<div
id="biuuu">jb51.net</div>"
[1]=>
string(33)
"<div
id="biuuu_2">jb51.net2</div>"
[2]=>
string(33)
"<div
id="biuuu_3">jb51.net3</div>"
}
[1]=>
array(3)
{
[0]=>
string(5)
"biuuu"
[1]=>
string(7)
"biuuu_2"
[2]=>
string(7)
"biuuu_3"
}
[2]=>
array(3)
{
[0]=>
string(8)
"jb51.net"
[1]=>
string(9)
"jb51.net2"
[2]=>
string(9)
"jb51.net3"
}
}
共有三個表達式,分別顯示每一個表達式匹配的值,並以數組的形式存儲,這樣就把每一個DIV元素的ID和內容取出。運用正則表達式最主要還是要知道須要什麼,然後跟椐須要執行
匹配,並且思路清晰,並適當的藉助preg_match_all函數執行
輸出調試,非常方便。

2. 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://wang

3. php 幫寫個正則表達式,去掉串內兩個特殊字元(! \ )

簡單粗暴一點的話,直接用str_replace,字元串替換
$str = str_replace('!','',$str);
$str = str_replace('\','',$str);

稍微復雜一點的話,用正則替換
$str = preg_replace('/(^!)|(\\)/','',$str);
將開頭的!或者\字元替換成空字元(^表示開頭)

4. 如何在PHP中轉義正則表達式字元

在PHP中,實現轉義正則表達式字元的函數是:preg_quote函數。語法如下:
Stringpreg_quote(stringstr[,stringdelimiter])
Str是用來進行字元轉義的正則表達式,delimiter是其他需要轉義的字元。
在PHP中可以使用preg_quote函數轉義一些特殊字元。
例如:
<?php
$str=preg_quote(「/\d{3}(\-\d{4})/」);echo$str;?>
結果:
/\\d\{3\}\-d{4}\-d{4}/

<?php
$str=preg_quote(「/\d{3}(\-\d{4})/」,」3「);echo$str;?>
結果:
/\\d\{\3\}\-d{4}\-d{4}/
這兩個例子有什麼區別呢?
就是紅色區域中的「3」,在第二個例子中將「3」也轉義出了。

5. php 正則表達式 問題

書上印刷無錯誤
<?php echo ereg("a?","a");?> //true
<?php echo ereg("a?","bb");?> //true
<?php echo ereg("a?","aa");?>// true
你的 「?」的含義理解也沒有錯
另外輸出 true 就是 1 false 是空
ereg("a?") 包不包含a都是true 是根本不會出現false的機會
1:"bb" 匹配包含1個或者0個中的 0個a 所以是true
2:"a" 匹配包含1個或者0個中的 1個a 所以也是true
3:"aa" 同樣也是匹配包含一個a 因為正則在匹配到 "aa" 中第一個a的時候 就已經返回true了 根本就不在進行匹配下去
只能說這個正則很失敗
怎麼寫都是true

6. php 正則表達式

建議你到我的網站上下載PHP5參考手冊,里邊有詳細的正則表達式的參考。
模式要有開始和結束的字元,一下都是合法的:
/
|
#
'
前提是模式中不能再出現這個字元了。
結尾的/後邊的is是模式修政府,具體如下
i (PCRE_CASELESS)
如果設定此修正符,模式中的字元將同時匹配大小寫字母。
m(PCRE_MULTILINE)
默認情況下,PCRE 將目標字元串作為單一的一「行」字元所組成的(甚至其中包含有換行符也是如此)。「行起始」元字元(^)僅僅匹配字元串的起始,「行結束」元字元($)僅僅匹配字元串的結束,或者最後一個字元是換行符時其前面(除非設定了 D 修正符)。這和 Perl 是一樣的。

當設定了此修正符,「行起始」和「行結束」除了匹配整個字元串開頭和結束外,還分別匹配其中的換行符的之後和之前。這和 Perl 的 /m 修正符是等效的。如果目標字元串中沒有「\n」字元或者模式中沒有 ^ 或 $,則設定此修正符沒有任何效果。

s(PCRE_DOTALL)
如果設定了此修正符,模式中的圓點元字元(.)匹配所有的字元,包括換行符。沒有此設定的話,則不包括換行符。這和 Perl 的 /s 修正符是等效的。排除字元類例如 [^a] 總是匹配換行符的,無論是否設定了此修正符。
x(PCRE_EXTENDED)
如果設定了此修正符,模式中的空白字元除了被轉義的或在字元類中的以外完全被忽略,在未轉義的字元類之外的 # 以及下一個換行符之間的所有字元,包括兩頭,也都被忽略。這和 Perl 的 /x 修正符是等效的,使得可以在復雜的模式中加入注釋。然而注意,這僅適用於數據字元。空白字元可能永遠不會出現於模式中的特殊字元序列,例如引入條件子模式的序列 (?( 中間。
e
如果設定了此修正符,preg_replace() 在替換字元串中對逆向引用作正常的替換,將其作為 PHP 代碼求值,並用其結果來替換所搜索的字元串。

只有 preg_replace() 使用此修正符,其它 PCRE 函數將忽略之。

注意: 本修正符在 PHP3 中不可用。

A(PCRE_ANCHORED)
如果設定了此修正符,模式被強制為「anchored」,即強制僅從目標字元串的開頭開始匹配。此效果也可以通過適當的模式本身來實現(在 Perl 中實現的唯一方法)。
D(PCRE_DOLLAR_ENDONLY)
如果設定了此修正符,模式中的美元元字元僅匹配目標字元串的結尾。沒有此選項時,如果最後一個字元是換行符的話,美元符號也會匹配此字元之前(但不會匹配任何其它換行符之前)。如果設定了 m 修正符則忽略此選項。Perl 中沒有與其等價的修正符。
S
當一個模式將被使用若干次時,為加速匹配起見值得先對其進行分析。如果設定了此修正符則會進行額外的分析。目前,分析一個模式僅對沒有單一固定起始字元的 non-anchored 模式有用。
U(PCRE_UNGREEDY)
本修正符反轉了匹配數量的值使其不是默認的重復,而變成在後面跟上「?」才變得重復。這和 Perl 不兼容。也可以通過在模式之中設定 (?U) 修正符或者在數量符之後跟一個問號(如 .*?)來啟用此選項。
X(PCRE_EXTRA)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式中的任何反斜線後面跟上一個沒有特殊意義的字母導致一個錯誤,從而保留此組合以備將來擴充。默認情況下,和 Perl 一樣,一個反斜線後面跟一個沒有特殊意義的字母被當成該字母本身。當前沒有其它特性受此修正符控制。
u(PCRE_UTF8)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式字元串被當成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起開始檢查模式的 UTF-8 合法性。

7. PHP正則表達式的問題,實現特殊符號的替換,能實現,追加高分

utf-8
PHP

$string = '當服dkfj#sd的時刻房間@asdfasdf聖123AAAAAAAAA13誕節 聖誕節@獨守空房#的科地方#打df機@dkfj[sfj';
$pattren = "/(@([\x{4e00}-\x{9fa5}]|[@#\w])*[^@#\w])/u";

if(preg_match($pattren,$string,$matches)){
echo $matches[1];
}else{
echo 'wrong code';
}

8. php 正則表達式符號問題

在這個正則表達式中 {} 就是//
preg_match 這個函數源於perl的正則,在perl的正則中分界符可以很多的成對分隔符
這里沒有使用// 的原因是正則表達式中有/這樣的字元,使用//分隔的話需要對其中的/進行轉義
你還可以把{}換成## []試試,應該都是可以的

9. 詳解PHP正則表達式:什麼是正則表達式

正則表達式,又稱規則表達式,英文名為Regular Expression,在代碼中常簡寫為regex、regexp或RE,是計算機科學的一個概念。正則表通常被用來檢索、替換那些符合某個模式(規則)的文本。
正則表達式是對字元串(包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為「元字元」))操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。正則表達式是一種文本模式,模式描述在搜索文本時要匹配的一個或多個字元串。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:233
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:532
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726