PHP从字符串中提取ID

Joh*_*lia 1 php regex

例如:Lorem ipsum dolor sit amet,[ID:123] Suspendisse [blahsh 68] condimentu

我怎么会得到123?

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

$pos = strrpos($l, "ID: ");
if ($pos === false) {
    $id = 123;
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 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
)
Run Code Online (Sandbox Code Playgroud)

模式匹配[ID:后跟任意数量的空格\s+.然后(\d+)捕获数字序列.该[]支架需要被转义为\[ \],因为他们是在正则表达式元字符.

如果您对表达式的其余部分感兴趣:

  • ^.* 是字符串的开头和以下任何其他内容......
  • .*$ 在匹配的部分已经在上面解释之后,是字符串末尾的其他任何内容.