php正則a
『壹』 php正則匹配所有a標簽,並刪除
1,過濾所有html標簽的正則表達式:</?[^>]+>
2,過濾所有html標簽的屬性的正則表達式:$html = preg_replace("/<([a-zA-Z]+)[^>]*>/","<\\1>",$html);
3,過濾部分html標簽的正則表達式的排除式(比如排除<p>,即不過濾<p>):</?[^pP/>]+>
4,過濾部分html標簽的正則表達式的枚舉式(比如需要過濾<a><p><b>等):</?[aApPbB][^>]*>
5,過濾部分html標簽的屬性的正則表達式的排除式(比如排除alt屬性,即不過濾alt屬性):\s(?!alt)[a-zA-Z]+=[^\s]*
『貳』 PHP 正則表達式總結
PHP 正則表達式總結
1.PHP中兩個常用的正則函數
a.preg_match 正則函數,以perl語言為基礎
語法:preg_match( mode,string subject,array matches)
說明:mode參數---- 正則的模塊,也就是正則表達式(語法)
subject參數---- 正則的內容
matches參數---- 正則的結果(獲得一個數組的形式)
b.ereg 正則函數,以POSIX基礎(Unix、Script)
語法:ereg(mode ,string subject, array regs)
2.正則表達式中包括的元素
a.原子(普通字元:a-z A-Z 0-9 、原子表、轉義字元)
b.元字元(有特殊功能的字元,如:# 、*)
c.模式修正符(系統內置部分字元 i、m、S、U ...)
3.正則表達式中的「原子」
a.a-z A-Z _ 0-9 //最常見的字元
b.(abc)(skd) //用圓括弧包含起來的單元符號(一個整體)
c.[abcs][^abd] //用方括弧包含的原子表,原子表中的^代表排除或相反的內容
d.轉義字元
d 包含所有的數字[0-9]
D 除所有數字外[^0-9]
w 包含所有英文字元[a-z A-Z 0-9]
W 除所有英文字元外[^a-z A-Z 0-9]
s 回車,換行等
......
註明: 圓括弧 必須是整體才能匹配; 方括弧 只要是其子集,都可以匹配(內容存在)
4.正則表達式元字元
* 匹配前一個內容的0次1次或多次
. 匹配內容的0次1次或多次,但不包含回車換行(代指自己,任何內容)
+ 匹配前一個內容的1次或多次
? 匹配前一個內容的.0次或1次
| 選擇匹配類似PHP中的| (因為這個運算符合是弱類型導致前面最為整體匹配,類似一個單詞匹配)
^ 匹配字元串首部內容
$ 匹配字元串尾部內容
b 匹配單詞邊界,邊界可以是空格或者特殊符合(有單詞分界符,類似空格)
B 匹配除帶單詞邊界意外內容(無單詞分界符)
{m} 匹配前一個內容的重復次數為M次
{m,} 匹配前一個內容的重復次數大於等於M次
{m,n} 匹配前一個內容的重復次數M次到N次
( ) 合並整體匹配,並放入內存,可使用1 2…依次獲取 (調用放入內存中的內容)
5.運算順序
依然遵循從左到→右的運算規則
優先順序:
( ) 圓括弧因為是內存處理所以最高
* ? + { } 重復匹配內容其次
^ $ b 邊界處理第三
| 條件處理第四
最後按照運算順序計算匹配
6.模式修正符
模式修正符是為正則表達式增強和補充的一個功能,使用在正則之外 例如:/ 正則 / U
常用修正符:
i 正則內容在匹配時候不區分大小寫(默認是區分的)
m 在匹配首內容或者尾內容時候採用多行識別匹配
s 將轉義回車取消是為單行匹配如. 匹配的時候
x 忽略正則中的空白
A 強制從頭開始匹配
D 強制$匹配尾部無任何內容 n
U 禁止貪婪匹配 只跟蹤到最近的一個匹配符並結束, 常用在採集程序上的正則表達式
7.匹配功能
preg_match_all 全部匹配函數
語法:preg_match_all ( string pattern, string subject, array matches [, int flags] )
說明:對結果排序使 $matches[0] 為全部模式匹配的數
用途:截取比較詳細的內容,採集網頁,分析文本
8.替換功能
preg_replace 正則替換函數
語法:preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
說明:通過正則表達式來替換相關內容,類似之前學過的str_replace字元串替換,但 功能要強於它
提示:1、替換內容可以是一個正則也可以是數組正則
2、替換內容可以通過修正符e來解決替換執行內容
用途:替換一些比較復雜的內容上,也可以用於內容的轉換上
9.分割功能
preg_split 正則切割
語法:preg_split ( string pattern, string subject [, int limit [, int flags]] )
說明:通過正則表達式來切割相關內容,類似之前學過的explode切割函數,但explode 只能按照一種方式切割有局限性。
;『叄』 php的正則,怎麼匹配a標簽
preg_match_all ('/<a href="(.*?)".*?>(.*?)</a>/i',$yuanstr,$matches);
$1是鏈接 $2是鏈接文字
『肆』 php正則匹配所有a標簽,並刪除
試試這個
preg_replace('/(<a.*?>[sS]*?</a>)/','',$str);
『伍』 php 正則過濾掉 指定的a標簽
我這個更好
<?php
$str='<a class="qc" href="/car">汽車</a><a class="db" href="/car">大巴</a><a class="qc" href="/car">汽車</a>';
$str=preg_replace("/<a class=\"qc\" href=\"(.*)\">(.*)<\\/a>/iU","$2",$str); //過濾script標簽
echo $str;
?>
『陸』 怎麼用php正則獲得a標簽內的文字啊
php中正則匹配只要使用這兩個函數:
preg_match_all
preg_match
這里使用preg_match_all,代碼如下:
$subject='<ahref="xxx.php">abc測試</a>';//假設這是需要匹配的字元串
$pattern='/<ahref="[^"]*"[^>]*>(.*)</a>/';//這是匹配的正則表達式
preg_match_all($pattern,$subject,$matches);//開始匹配,該函數會把匹配結果放入$matches數組中
echo"<pre>";
print_r($matches);
/**
結果是:
Array
(
[0]=>Array
(
[0]=>abc測試
)
[1]=>Array
(
[0]=>abc測試
)
)
*/
『柒』 PHP 正則匹配A標簽獲得連接和文字
<a\b[^>]*\bhref=([^\s>]+)[^>]*>[\s\S]*?([^<>]*)</a>
解釋:
<a\b #匹配a標簽的開始
[^>]* #匹配a標簽href屬性前的其他屬性
\bhref=([^\s>]+) #匹配href屬性,並將匹配到的內容捕獲到分組1當中
[^>]*> #匹配a標簽的結束
[\s\S]*? #匹配a標簽文本前的img標簽
([^<>]*) #匹配a標簽文本並捕獲到分組2當中
</a> #匹配a標簽的關閉
分組1和分組2即為所需內容
簡化版:
<a\s*href=([^>]+)><img[^>]+>([^>]+)</a>
實際上簡化版可能效率更高……因為嚴格按照原文本格式來匹配。
不過如果標簽形式有一點變化就可能導致匹配失敗,所以這里寫了兩個版本。。
『捌』 php 正則 <a ></a> 中的 href 和img 地址
針對給定的標本數據,編寫如下正則供參考:
1、提取 jpg 地址鏈接
"(http://.*?.jpg)"
2、提取 a href 或是 img src 標簽中的 jpg 地址鏈接
[href|src]="(http://.*?.jpg)"
3、提取<a></a>標簽中的 jpg 地址鏈接
(<a.*)(http://.*.jpg)(".*")(http:/.*.jpg)(".*)</a>
『玖』 php 正則表達是匹配a標簽
可以,但是要用非貪婪模式:
'/<a.+?</a>/is';
'/<a[sS]+?</a>/i';
[sS] 表示任意字元(. 是除換行以外的任意字元)
+? 或 *? 是非貪婪模式的意思
兩個正則是等效的
『拾』 php正則(a,b)拿到a和b的值
<沒陪?php
$str='{a "b"}';
preg_match('/耐森\{(\w) "(\w)"\}/'昌察畝, $str, $matches);
var_mp($matches);