2014-07-06 49 views
-4

我想從一個字符串使用PHP正則表達式得到唯一的ID,但我有問題生成正則表達式模式。PHP的正則表達式模式

樣本網址

lesson-computer-networking-xpt2-t9295779.html // need to get 9295779 
lesson-summary-t9295778.html //need to get 9295778 
lesson-part2-t94.html //need to get 94 

字符串的第一部分的長度取決於頁面的標題,但最後部分總是-txxxxxxxx.html

有人可以幫助我來生成模式?

+0

@kingkero的問題是,我不知道正則表達式模式的想法。 –

回答

2

你可以使用下面的正則表達式t這是.html之前後能得到數量,

-t\K\d+(?=\.html) 

OR

(?<=-t).*(?=\.html) 

DEMO

你的PHP代碼將是,

<?php 
$data = <<<'EOT' 
lesson-computer-networking-xpt2-t9295779.html 
lesson-summary-t9295778.html 
lesson-part2-t94.html 
EOT; 
$regex = '~(?<=-t).*(?=\.html)~'; 
preg_match_all($regex, $data, $matches); 
var_dump($matches); 
?> 

輸出:

array(1) { 
    [0]=> 
    array(3) { 
    [0]=> 
    string(7) "9295779" 
    [1]=> 
    string(7) "9295778" 
    [2]=> 
    string(2) "94" 
    } 
} 

說明:

  • (?<=-t)甲回顧後用於後特定圖案的樣子。在我們的例子中,正則表達式引擎應該在匹配標記後面設置字符串-t
  • .*(?=\.html)接着,它高達字符串.html所有字符匹配(即,當.html由至REGx引擎看到,它突然停止匹配)
+0

感謝您的模式!欣賞它。 –

+0

@NaveenGamage很高興它解決了:-) –

+0

感謝您的解釋,如果URL是'lesson-tpart2-t94.html' –

1

你可以使用這樣的事情:

$url = 'lesson-computer-networking-xpt2-t9295779.html'; 
$matches = array(); 
$t = preg_match('/-t(.*?)\.html$/s', $url, $matches); 
print_r($matches[1]); 
2

這是我pattren

-t(\d+)\.html