簡體   English   中英

PHP preg_match和正則表達式

[英]PHP preg_match and regular expression

我是PHP新手

我正在嘗試獲取鏈接的主題號,但不起作用。

echo $topicsave為空。

這是我的代碼。

$data = '
<a href="http://forums.inwing.com/index.php/topic,40500.0.html">test_curl</a>
';
preg_match_all('/\<a[^\?]+\/([^\"]+)\.\s*\>test_curl\<\/a\>/', $data, $match);
    echo '<pre>',htmlspecialchars(print_r($match, true)),'</pre>';
    if( count($match[0])){
    foreach($match[1] as $vl){
        preg_match_all('/topic\,([0-9]+\.[0-9]+)/', $vl, $m1);
        if(count($m1[1])) 

           $topicsave = $m1[1][0];
           echo $topicsave;

    }
}

我想獲取主題號40500請幫助我,主題是變量,例如120或253612456

謝謝。

要從鏈接中提取主題編號,可以使用以下正則表達式。

正則表達式: topic,(\\d+(\\.\\d+)*)\\.html

說明:這樣做是在提供您到regex的鏈接並提取topic,.html之間的數字。

Regex101演示

Ideone上的PHP演示

您可以這樣做:

$re = "/topic,(?'topic'\\d+)/"; 
$str = "<a href=\"http://forums.inwing.com/index.php/topic,40500.0.html\">test_curl</a>"; 

preg_match($re, $str, $matches);

echo $matches['topic'];

將輸出:

40500

我在這里使用的(?'topic'\\\\d+)是一個命名組 它允許您使用您使用的名稱(此處為topic )從匹配項中檢索數據。

如果您需要進行實時測試,那么Regex 101很棒。

試試這個解決方案:

$data = '<a href="http://forums.inwing.com/index.php/topic,40500.0.html">test_curl</a>';
preg_match_all('/topic,(.*?)\..*\.html/s', $data, $match);    
echo $match[1][0]; // Output: 40500

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM