1
E.g:Lorem存有悲坐阿梅德,[ID:123] Suspendisse [blahsh 68] condimentuPHP提取物ID
我怎麼會得到123?
我在哪裏檢查字符位置的第一部分:
$pos = strrpos($l, "ID: ");
if ($pos === false) {
$id = 123;
}
E.g:Lorem存有悲坐阿梅德,[ID:123] Suspendisse [blahsh 68] condimentuPHP提取物ID
我怎麼會得到123?
我在哪裏檢查字符位置的第一部分:
$pos = strrpos($l, "ID: ");
if ($pos === false) {
$id = 123;
}
這是最容易使用正則表達式處理。
$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+)
捕獲數字序列。 []
括號需要轉義爲\[ \]
,因爲它們是正則表達式中的元字符。
如果你有興趣在表達式的其餘部分:
^.*
是字符串和其他任何以下的開始....*$
是別的高達字符串後結束上面已經解釋了匹配的部分。也許這樣如果字符串總是[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];
我猜我需要學習正則表達式。任何人都可以推薦一個開始/參考的好地方嗎? –
ID是否總是用方括號包起來? –
@JohnMagnolia http://www.regular-expressions.info/是最好的開始,雖然它很密集。這是一個非常全面的參考。 –