php正則提取
1. php正則提取字元串
有{} () [] <>可以
<?php
$str = '中文abcd123${1,2,3,4,5}.jpg[123123]444<44g>44.124(j)12g4';
$search ='/[{(\[<](.*?)[})\]>]/';
preg_match_all($search,$str,$r);
print_r($r[1]);
?>
2. php 正則提取網頁中指定的信息並且整理成想要的格式
<?php
$Table='<tableborder="1"bordercolor="#666666"style="BORDER-COLLAPSE:collapse"cellspacing="0"class=tableborder><trclass="color-header"><tdwidth="100"align="center"nowrap>課程性質</td><tdwidth="100"align="center"nowrap>課程號</td><tdwidth="150"align="center"nowrap>課程名稱</td><tdwidth="80"align="center"nowrap>考試類型</td><tdwidth="40"align="center"nowrap>學時</td><tdwidth="40"align="center"nowrap>學分</td><tdwidth="80"align="center"nowrap>成績類型</td><tdwidth="60"align="center"nowrap>期末成績</td><tdwidth="60"align="center"nowrap>總評成績</td></tr><trclass="color-row"><tdnowrap>專業核心課</td><tdalign="center"nowrap>1091123</td><tdnowrap>軟體工程</td><tdnowrap>考試</td><tdalign="right"nowrap>51</td><tdalign="right"nowrap>2.5</td><tdnowrap>期末考試</td><tdalign="right"nowrap>89</td><tdalign="right"nowrap>95</td></tr><trclass="color-row"><tdnowrap>學科基礎課</td><tdalign="center"nowrap>1091134</td><tdnowrap>C++程序設計</td><tdnowrap>考試</td><tdalign="right"nowrap>51</td><tdalign="right"nowrap>2.5</td><tdnowrap>期末考試</td><tdalign="right"nowrap>87</td><tdalign="right"nowrap>86</td></tr></table>';//你所謂的部分網頁源內容,我這里是賦值給一個變數,實際中,你怎麼來,你自己寫
/*過濾下多餘的換行和空格*/
$Table=preg_replace('/s{2,}/','',$Table);
/*正則提取出每一行先*/
preg_match_all('/<trs+class="color-row">(([sS](?<!</tr>))*)</tr>/is',$Table,$Tr);
/*得到每一行(也就是每一個科目的成績的一個數組),數組值是td單元格html代碼,還不行,還需要進一步匹配數據*/
$ChengJiArray=$Tr[1];
/*設置一個變數,用於儲存總共有多少學科,初始賦值一個空數組*/
$XueKeArray=array();
/*遍歷匹配出來的表格行數組*/
foreach($ChengJiArrayas$Value){
preg_match_all('/<td[^>]*>([^<]*)</td>/is',$Value,$Td);//匹配每個單元格中的數據
$Data=$Td[1];//等到數據集合
/*構建一個記錄各個項目的數組*/
$XiangMuArray=array('name'=>$Data[2],'type'=>$Data[6],'fenshu'=>$Data[7],'zongfenshu'=>$Data[8]);
/*給最後的學科數組賦值*/
$XueKeArray[]=$XiangMuArray;
}
/*清空不需要的變數和數組*/
unset($Table,$Tr,$ChengJiArray,$Value,$Td,$Data,$XiangMuArray);
/*最後列印一下結果數組用於測試,具體應用你自己寫*/
print_r($XueKeArray);
運行結果截圖:
3. PHP正則表達式抓取數據
$string_1 = '
<tr>
<td width=15% align=right><b>電話:</b></td>
<td width=85%>86666947</td>
</tr>
<tr>
<td align=right ><b>地址:</b></td>
<td >春熙路8號</td>
</tr>
<tr>
<td align=right ><b>人均:</b></td>
<td ><span class=f_red_14b>14</span>元</td>
</tr>
<tr>
<td align=right><b>菜系:</b></td>
<td>快餐/小吃</td>
</tr>
'
;
preg_match_all ("|<td[^>]*>([^(<b>)].*)</td>|", $string_1, $out, PREG_PATTERN_ORDER);
print_r($out[1]);
---------------------------------------------------------
輸出結果為:
Array
(
[0] => 86666947
[1] => 春熙路8號
[2] => 快餐/小吃
)
4. PHP如何正則表達式提取網頁內容
如果你要<div class="nav" monkey="nav">和<div class="head-ad">之間的所有源碼,用 preg_match 就可以,不用preg_match_all ,如果你要裡面的所有的 <li></li>標簽中的內容,可以用preg_match_all
//提取所有代碼
$pattern = '/<div class="nav" monkey="nav">(.+?)<div class="head-ad">/is';
preg_match($pattern, $string, $match);
//$match[0] 即為<div class="nav" monkey="nav">和<div class="head-ad">之間的所有源碼
echo $match[0];
//然後再提取<li></li>之間的內容
$pattern = '/<li.*?>(.+?)<\/li>/is';
preg_match_all($pattern, $match[0], $results);
$new_arr=array_unique($results[0]);
foreach($new_arr as $kkk){
echo $kkk;
}
5. PHP正則提取 DIV CLASS 數據
用PHP正則表達式匹配,就可以提取class裡面的數據,並將no去除,完整的PHP程序如下
<?php
$str='<divclass="lot-nums"><spanclass="no7"></span><spanclass="no8"></span><spanclass="no5"></span><spanclass="no9"></span><spanclass="no2"></span><spanclass="no4"></span><spanclass="no6"></span><spanclass="no0"></span><spanclass="no3"></span><spanclass="no1"></span></div>';
$regex='/<spanclass="no(d+)"/i';
preg_match_all($regex,$str,$result);
print_r($result[1]);
?>
運行結果
6. 關於PHP正則提取問題
$mode = "/tid=(\d*)/";
if(preg_match($mode,$url,$arr)){
$thread['modthreadkey'] = modauthkey($arr[1]);
}
7. php正則提取
可用如下的代碼來實現:
<?php
$str1="|1234|#2354#@2314@
|1314|#2154#@2214@
|1234|#2354#@2314@
|1314|#2154#@2214@";
if(preg_match_all("/|(d{4})|#(d{4})#@(d{4})@/m",$str1,$out,PREG_PATTERN_ORDER))
for($i=0;$i<count($out[0]);$i++)
{
echo"{'".$out[1][$i]."','".$out[2][$i]."','".$out[2][$i]."'}<br/>";
}
?>
效果如下所示:
{'1234','2354','2354'}
{'1314','2154','2154'}
{'1234','2354','2354'}
{'1314','2154','2154'}
8. php正則表達式字元串中提取數字,並截取其中的6位
<?php
$str='b37ba964bb7dfab1869e1cf8';
$preg="/d/is";
preg_match_all($preg,$str,$arr);
$temp=implode('',$arr[0]);
echo$temp;//匹配的數字
echo'<br/>'.substr($temp,1,4);//第2位開始取4個
echo'<br/>'.substr($temp,2,5);//第3位開始取5個
?>
9. PHP正則提取中文部分內容,怎麼實現呀
中文可以用正則表達式進行匹配,但是具體匹配方法與中文的編碼方式有關:
如果是GBK(GB2312、GB1080),那麼中文的編碼范圍是:
x80-xff
如果是UTF-8編碼,那麼中文的編碼范圍是:
u4e00-u9fa5
那麼匹配漢字的正則表達式可以是:
/[x7f-xff]+/
或者
/[u4e00-u9fa5]+/
例子代碼,顯示文件中的所有漢字(GBK編碼):
<?php
$s=file_get_contents('1.txt');
if(preg_match_all('/[x7f-xff]+/',$s,$r)){
for($i=1;$i<count($r[0]);$i++)echo"$i ".$r[0][$i]." ";
}
?>