有幾個正則表達式的問題請教高手

發表于:2007-05-25來源:作者:點擊數: 標簽:問題有幾個請教高手正則
第一個問題: $a1="aaaaaaaaatabletrtda; 如何得到http://test.com/test.asp?id=15這個網址? 第二個問題: $b1=" tableborder=0cellspacing=0cellpadding=0width=100% trtd共有300條記錄,現在

第一個問題: 
$a1 = "aaaaaaaaa<table><tr><td><a ; 
如何得到http://test.com/test.asp?id=15這個網址? 

第二個問題: 

$b1 = " 
<table border=0 cellspacing=0 cellpadding=0 width=100%> 
<tr><td>共有300條記錄,現在為第1頁</td></tr> 
<tr><td> 
<a href='test.asp?page=1&id=15'>1</a> 
<a href='test.asp?page=2&id=15'>2</a> 
<a href='test.asp?page=3&id=15'>3</a> 
<a href='test.asp?page=4&id=15'>4</a> 
</td></tr> 
</table> 
"; 

如何把判斷共有 4 頁,并將4頁的url存進數組。然后使用for循環讀出? 

test.asp?page=1&id=15 
test.asp?page=2&id=15 
test.asp?page=3&id=15 
test.asp?page=4&id=15

 windlike 回復于:2005-03-02 09:03:58
從別的論壇看到的解決第一個問題的方法:
方法 I
preg_match("/href=\'([^']*?)\'>/", $a1, $match); 
$url = $match[1]; 

方法 II
eregi("<a.+href='?(.*)'>主題",$a1,$regs); 
echo $regs[1]."\n";

 jacketble 回復于:2005-03-02 09:13:38
<?
$a1 = "aaaaaaaaa<table><tr><td><a ;
$a=ereg_replace(".+(a href\=\')(.+)(\'\>)(.+)","\\2",$a1);
echo $a;
?>

<?
$b1 = "
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr><td>共有300條記錄,現在為第1頁</td></tr>
<tr><td>
<a href='test.asp?page=1&id=15'>1</a>
<a href='test.asp?page=2&id=15'>2</a>
<a href='test.asp?page=3&id=15'>3</a>
<a href='test.asp?page=4&id=15'>4</a>
</td></tr>
</table>
";
$b=explode("href",$b1);
for($i=1;$i<count($b);$i++)
  {
    $ok[$i-1]=ereg_replace("(\=\')(.+)(\'\>.+)","\\2",$b[$i]);
  }
for($i=0;$i<count($ok);$i++)
  echo $ok[$i].'<br>';
?>

 windlike 回復于:2005-03-02 09:38:39
多謝多謝.問題已經解決.

那位能解釋一下下面表達式中的pattern語法?
ereg_replace(".+(a href\=\')(.+)(\'\>)(.+)","\\2",$a1);

 windlike 回復于:2005-03-02 10:15:41
下面是我找到的資料,拿來供和我一樣剛接觸正則表達式的朋友參考:

ereg_replace ()函數說明:
string ereg_replace ( string pattern, string replacement, string string)
本函數在 string 中掃描與 pattern 匹配的部分,并將其替換為 replacement。 

返回替換后的字符串。(如果沒有可供替換的匹配項則會返回原字符串。) 

如果 pattern 包含有括號內的子串,則 replacement 可以包含形如 \\digit 的子串,這些子串將被替換為數字表示的的第幾個括號內的子串;\\0 則包含了字符串的整個內容。最多可以用九個子串。括號可以嵌套,此情形下以左圓括號來計算順序。 

如果未在 string 中找到匹配項,則 string 將原樣返回。

上面貼子 正則表達式中 用的幾個 特殊字符 的說明如下:
// "." 匹配除“\n”之外的任何單個字符
// "+" 一次或多次匹配前面的字符或子表達式
// "\" 將下一字符標記為特殊字符、文本、反向引用或八進制轉義符
// (pattern) 匹配 pattern 并捕獲該匹配的子表達式

 jacketble 回復于:2005-03-02 10:18:04
ereg_replace
(PHP 3, PHP 4 , PHP 5)

ereg_replace -- 替換正則表達式
說明
string ereg_replace ( string pattern, string replacement, string string)


本函數在 string 中掃描與 pattern 匹配的部分,并將其替換為 replacement。 

返回替換后的字符串。(如果沒有可供替換的匹配項則會返回原字符串。) 

如果 pattern 包含有括號內的子串,則 replacement 可以包含形如 \\digit 的子串,這些子串將被替換為數字表示的的第幾個括號內的子串;\\0 則包含了字符串的整個內容。最多可以用九個子串。括號可以嵌套,此情形下以左圓括號來計算順序。 

如果未在 string 中找到匹配項,則 string 將原樣返回。 

例如,下面的代碼片斷輸出 "This was a test" 三次: 

例子 1. ereg_replace() 例子

<?php

$string = "This is a test";
echo ereg_replace (" is", " was", $string);
echo ereg_replace ("( )is", "\\1was", $string);
echo ereg_replace ("(( )is)", "\\2was", $string);

?>

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97