① php簡單正則匹配Img標簽src內容採集
//抓取網頁
echo" 抓取網頁======================================= ";
functiongetHTTPS($url){
$ch=curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_REFERER,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
$result=getHTTPS("");
$array=array(
'img',
'script',
'link'
);
$num=count($array);
for($i=0;$i<$num;++$i){
echo$array[$i]."-------------------------------- ";
if(preg_match_all("/<".$array[$i]."[^>]*>/i",$result,$m)){
for($j=0;$j<count($m[0]);$j++){
echo$m[0][$j]." ";
}
}
}
② PHP正則表達式提取IMG標簽的問題
$preg = "/<img src=\"(.+?)\".*?>/";
③ 請問怎樣用php 正則表達式取設置寬和高的[img][/img]標簽裡面的圖片地址
用php給你運行了一個
$txt='[img=442,296]圖片地址1[/img]
[img=300,188]圖片地址2[/img]
[img=120,206]圖片地址3[/img]';
$re='/[img=(d+,d+)](S+?)[/img]/';//這里修改下,加上一個?防止以單行文本導致的定界符不準問題
$arr=[];
preg_match_all($re,$txt,$arr);
var_mp($arr);
運行結果如下
phptest.php
array(3){
[0]=>
array(3){
[0]=>
string(32)"[img=442,296]圖片地址1[/img]"
[1]=>
string(32)"[img=300,188]圖片地址2[/img]"
[2]=>
string(32)"[img=120,206]圖片地址3[/img]"
}
[1]=>
array(3){
[0]=>
string(7)"442,296"
[1]=>
string(7)"300,188"
[2]=>
string(7)"120,206"
}
[2]=>
array(3){
[0]=>
string(13)"圖片地址1"
[1]=>
string(13)"圖片地址2"
[2]=>
string(13)"圖片地址3"
}
}
//增加一個矩陣轉換
$txt='[img=442,296]圖片地址1[/img][img=300,188]圖片地址2[/img][img=120,206]圖片地址3[/img][img=120,206]wwww[/img]';
$re='/[img=(d+,d+)](S+?)[/img]/';
var_mp(preg_match_all_to_array($re,$txt));
functionpreg_match_all_to_array($re,$txt)
{
$arrs=[];
preg_match_all($re,$txt,$arrs);
if($arrs===false)
return$arrs;
//移除到總匹配數據
array_shift($arrs);
$return=[];
//獲取矩陣縱長
$arrs_longitudinal=count($arrs);
for($i=0;$i<$arrs_longitudinal;$i++){
//獲取單列橫長
$arrs_transverse=count($arrs[$i]);
for($j=0;$j<$arrs_transverse;$j++){
$return[$j][$i]=$arrs[$i][$j];
unset($arrs[$i][$j]);
}
unset($arrs[$i]);
}
return$return;
}
④ php正則表達式[img=**]
按照你的要求編寫的php程序如下(見圖,正則匹配結果取第一和第二捕獲組的數據)
⑤ php 正則表達式取[img][/img]標簽裡面的東西
<?php
$string = '[img]http://www..com/img/bdlogo.gif[/img]網路網路[img]http://127.0.0.1/jx09/p_w_upload/Mon_1308/196_403966_392c1785279171a.png[/img]<p>sssss</p>';
preg_match_all("|[img](.*)[/img]|iUs",$string,$arr);
foreach($arr[0] as $v){
echo $v.'<br>';
}
⑥ 求教php正則高手。php正則獲取html內容中的所有img路徑及名稱,替換img的路徑
正則表達式:(?<=<img src=")(/.+/)(.+?.(gif|jpg|png))(?=">)
分別取第0和第2捕獲組的數據,就是你要的獲取/abc/efg/qwe/1.gif和獲取1.gif的數據
替換你可以用上面的正則表達式:(?<=<img src=")(/.+/)(.+?.(gif|jpg|png))(?=">)
替換成:style/images/$2
我給你一個用java實現的上述正則表達式的例子.
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassCC{
publicstaticvoidmain(String[]args){
Strings="<imgsrc="/abc/efg/qwe/1.gif">";
Stringregex="(?<=<imgsrc=")(/.+/)(.+?\.(gif|jpg|png))(?=">)";
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
while(m.find()){
System.out.println(m.group());
System.out.println(m.group(2));
}
System.out.println(s.replaceAll("(?<=<imgsrc=")(/.+/)(.+?\.(gif|jpg|png))(?=">)","style/images/$2"));
}
}
運行結果:
/abc/efg/qwe/1.gif
1.gif
<img src="style/images/1.gif">
⑦ php 正則判斷img標簽
$content='<imgsrc="1.jpg"alt="">我是文字<imgsrc="2.jpg"alt="">';
if(preg_match_all("/<img[^>]*src[="'s]+([^"']*)["']?[^>]*>((?:(?!<img)[sS])*)/i",$content,$m)){
for($j=1;$j<count($m);$j++){
for($i=0;$i<count($m[$j]);$i++){
echo$m[$j][$i]." ";
}
}
}