php正則html
1. php正則表達式查找html內容
php正則表達式查找html內容的方法:
preg_match('/<p align=\"center\"><big><strong>(.*?)<\/strong><\/big><\/p>/',$str,$result);
代碼解釋:
$str就是上面的html裡面的內容;
$result就是匹配到的字元串,可以print_r($result);看看裡面就有你要的結果,或者直接echo $result[1];
就是「在LINUX下配置MYSQL、PHP和JSP」這幾個字元了。
2. php用正則獲取html標簽內容
推薦使用querylist
<?php
header("Content-type:text/html;charset=utf-8");
require'QueryList/QueryList.class.php';
$url="要抓取的網站";
$reg=array(
"title"=>array("a","text"),
"src"=>array("a","href"),
);
//$rang="[id^=post-]";
$hj=QueryList::Query($url,$reg);
print_r($hj->jsonArr);
3. php使用正則表達式去掉html中的注釋方法
最近在項目中在需要輸出瀏覽器中的源文件需要去掉html中的注釋,在網上看了很多的方案,不過很多的答案都是一樣的,並不能解決我的問題,於是就自己寫正則表達式,也對正則有了更加深刻的理解。
首先比較基礎的是:
$a
=
'<!--ceshi-->ceshi';
$a
=
preg_replace('#<!--.*-->#'
,
''
,
$a);
var_mp($a);
上面的代碼會輸出ceshi。
但是如果是下面的字元串的話,就不能達到我們希望的效果了
$a
=
'<!--ceshi-->ceshi<!--ceshi-->';
$a
=
preg_replace('#<!--.*-->#'
,
''
,
$a);
var_mp($a);
於是我們就把匹配規則改成如下的格式
preg_replace('#<!--.*?-->#'
,
''
,
$a);
但是在html中如果有<!--[if
lt
IE
9]>ceshi<![endif]-->這樣的代碼的話是不能去掉的,所以我們需要改進匹配規則,改成以下的格式
preg_replace('#<!--[^\!\[]*?-->#'
,
''
,
$a);
又接著如果html中有<script><!--ceshi//--></script>的代碼,我們又需要改一下我們的匹配規則了,改成了以下格式
preg_replace('#<!--[^\!\[]*?(?<!\/\/)-->#'
,
''
,
$a);
這樣的話我基本上就去掉了我需要去掉的html的注釋了!
以上就是小編為大家帶來的php使用正則表達式去掉html中的注釋方法全部內容了,希望大家多多支持腳本之家~
4. php正則表達來獲取html中的部分內容
1、幾種函數的簡單說明:
(1)preg_grep -- 返回與模式匹配的數組單元
preg_grep 返回一個input 數組中與給定的 pattern 模式相匹配的單元所組成的數組。
(2)preg_match -- 進行正則表達式匹配
說明:int preg_match ( string pattern, string subject [, array matches [, int flags]] )在 subject 字元串中搜索與 pattern 給出的正則表達式相匹配的內容。 返回值0或1。
(3)preg_replace -- 執行正則表達式的搜索和替換
(4)preg_split -- 用正則表達式分割字元串
2. 一般來說,如果用正則來獲取匹配內容,一般使用 preg_match/ preg_match_all 函數。
補充回答:
正則表達式如下:
'%<div class="wap2"><span>功能</span>(.*?)</div>%si'
以下是代碼,經測試,運行正常:
<?php
$str = '<div class="wap2"><span>功能</span>這裡面是要獲取的內容,不能確定什麼字元,可能是數字(123456…)字母(badn…),特殊浮等(o_O\(^o^)/…)</div>';
$pa = '%<div class="wap2"><span>功能</span>(.*?)</div>%si';
preg_match($pa,$str,$r);
echo $r[1];
?>
5. PHP正則表達式如何匹配HTML標簽
這個問題類似求括弧配對. 用正則方法可能不行. 可以這樣:
1) 字元串分析法求解: 建立一個計數器, 同時從前向後掃描 html 內容, 從要選擇的段落開頭開始, 每次讀到一個 <td ..> 標簽, 計數器加一, 每次讀到一個 </td> 標簽, 計數器減一, 如果 沒有意外, 當計數器減為零時, 就找到了配對的 td 結束標簽.
2) 用 XmlDocument 讀取整段 html, 然後利用 DOM 的一系列方法選擇出你要的內容.
6. php正則表達式匹配HTML
<?php
$str='<tr>
<tdrowspan="2"class="col">20150630</td>
<tdclass="col">AAAA</td>
<tdclass="col">BBB</td>
<tdclass="col">CCC</td>
<tdclass="col">DDD</td>
</tr>';
preg_match_all('/<td[^>]*>(.*?)</td>/is',$str,$matched);
print_r($matched[1]);
exit;
7. php正則提取HTML中的內容
那就無需正則了!
php本身就有一個函數:strip_tags()
這個函數有2個參數
第一個:需要過濾的字元串, 在這里也就是你說的html, 這個函數必須
第二個:要保留的html標簽, 就是設置你不想過濾掉的html標簽, 這個函數可選!
在第二個參數預設的情況下, 會將所有html標簽過濾掉!
還要什麼正則呢???
8. php 正則匹配<html> 的問題。
<html>(.*)</html> 這樣根本不行,因為源代碼裡面有換行ch(13),還有一些 tab鍵,應該這樣:
preg_match('/<html>([\s\S]*)</html>/iU',$get,$data);
在這里 $get 是所有的的內容,就是要匹配的文章全部,
$data 是正則匹配後的結果,你可以 printf 出來看看。
上面的 [\s\S]* 這是匹配所有字元,所有回車,所有字元。
在舉一個例子給你吧,要設我為最佳哇,哈哈,謝謝。
preg_match('/<div class="contentCenter">([\s\S]*)</div>/iU',$get,$lists);
看這個例子,你就更了解這個函數啦。。。。
9. php正則替換html代碼中的內容
這個簡單,用不上正則,直接字元串替換即可:
$str = "<font size="2" face="楷體\\\\\\\_GB2312"> 犯罪研究與辯護部」、「刑民交叉研究與辯護部」等10餘個專業部門。</font>";
$new_str = str_replace('size="2"', '', $str); // 這是替換為空
$new_str = str_replace('size="2"', 'size=""', $str);//這是替換為空屬性值