例如:Lorem ipsum dolor sit amet,[ID: 123] Suspendisse [blahsh 68] condimentu
我怎么会得到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];