2

我对使用 preg_match 很陌生。在发布这个问题之前搜索了很多答案。找到了很多帖子来获取基于 youtube ID 等的数据。但没有根据我的需要。如果是愚蠢的问题,请原谅我。

我需要使用 preg_match 从字符串中获取 ID。字符串的格式

[#1234] Subject

如何从字符串中仅提取“1234”?

4

5 回答 5

4

一种解决方案是:

\[#(\d+)\]

这匹配左方括号和井号[#,然后捕获一个或多个数字,然后是右方括号]

你会像这样使用它:

preg_match( '/\[#(\d+)\]/', '[#1234] Subject', $matches);
echo $matches[1]; // 1234

您可以在此演示中看到它的工作原理。

于 2013-08-03T17:36:06.583 回答
2

你可以试试这个:

preg_match('~(?<=\[#)\d+(?=])~', $txt, $match);

(?<=..)是一个lookbehind(只是一个检查)

(?=..)是前瞻

于 2013-08-03T17:37:27.467 回答
1

你的正则表达式:

preg_match('/^\[\#([0-9]+)\].+/i', $string, $array);
于 2013-08-03T17:39:00.790 回答
1

这是你可以做到的一种方式:

<?php
$subject = "[#1234] Subject";
$pattern = '/^\[\#([0-9]+)/';
preg_match($pattern, $subject, $matches);

echo $matches[1]; // 1234
?>
于 2013-08-03T17:41:09.747 回答
0

要仅获取整数,您可以使用子模式 http://php.net/manual/en/regexp.reference.subpatterns.php

 $string="[#1234] Subject";
 $pattern="/\[#(?P<my_id>\d+)](.*?)/s";
 preg_match($pattern,$string,$match);
 echo $match['my_id'];
于 2013-08-03T18:57:46.107 回答