PHP从字符串中提取ID

时间:2012-12-03 14:47:07

标签: php regex

E.g:Lorem ipsum dolor sit amet,[ID:123] Suspendisse [blahsh 68] condimentu

我怎么会得到123?

我有第一部分,我检查角色位置:

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

2 个答案:

答案 0 :(得分:9)

使用正则表达式最容易处理。

$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 :(得分: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];