2012-12-03 97 views
1

E.g:Lorem存有悲坐阿梅德,[ID:123] Suspendisse [blahsh 68] condimentuPHP提取物ID

我怎麼會得到123?

我在哪裏檢查字符位置的第一部分:

$pos = strrpos($l, "ID: "); 
if ($pos === false) { 
    $id = 123; 
} 
+0

我猜我需要學習正則表達式。任何人都可以推薦一個開始/參考的好地方嗎? –

+0

ID是否總是用方括號包起來? –

+1

@JohnMagnolia http://www.regular-expressions.info/是最好的開始,雖然它很密集。這是一個非常全面的參考。 –

回答

7

這是最容易使用正則表達式處理。

$matches = array(); 
$pattern = '/^.*\[ID:\s+(\d+)\].*$/'; 
preg_match($pattern, "Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu", $matches); 


// Your number is in $matches[1] 
Array 
(
    [0] => Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu 
    [1] => 123 
) 

的模式匹配[ID:隨後經由\s+任意數目的空格。然後(\d+)捕獲數字序列。 []括號需要轉義爲\[ \],因爲它們是正則表達式中的元字符。

如果你有興趣在表達式的其餘部分:

  • ^.*是字符串和其他任何以下的開始...
  • .*$是別的高達字符串後結束上面已經解釋了匹配的部分。
1

也許這樣如果字符串總是[ID:1234]

$str='Lorem ipsum dolor sit amet, [ID: 123] Suspendisse [blahsh 68] condimentu'; 
preg_match_all("~\[ID:\s(.*?\d+)\]~",$str,$match); 
echo $match[1][0];