我对使用 preg_match 很陌生。在发布这个问题之前搜索了很多答案。找到了很多帖子来获取基于 youtube ID 等的数据。但没有根据我的需要。如果是愚蠢的问题,请原谅我。
我需要使用 preg_match 从字符串中获取 ID。字符串的格式
[#1234] Subject
如何从字符串中仅提取“1234”?
我对使用 preg_match 很陌生。在发布这个问题之前搜索了很多答案。找到了很多帖子来获取基于 youtube ID 等的数据。但没有根据我的需要。如果是愚蠢的问题,请原谅我。
我需要使用 preg_match 从字符串中获取 ID。字符串的格式
[#1234] Subject
如何从字符串中仅提取“1234”?
一种解决方案是:
\[#(\d+)\]
这匹配左方括号和井号[#
,然后捕获一个或多个数字,然后是右方括号]
。
你会像这样使用它:
preg_match( '/\[#(\d+)\]/', '[#1234] Subject', $matches);
echo $matches[1]; // 1234
您可以在此演示中看到它的工作原理。
你可以试试这个:
preg_match('~(?<=\[#)\d+(?=])~', $txt, $match);
(?<=..)
是一个lookbehind(只是一个检查)
(?=..)
是前瞻
你的正则表达式:
preg_match('/^\[\#([0-9]+)\].+/i', $string, $array);
这是你可以做到的一种方式:
<?php
$subject = "[#1234] Subject";
$pattern = '/^\[\#([0-9]+)/';
preg_match($pattern, $subject, $matches);
echo $matches[1]; // 1234
?>
要仅获取整数,您可以使用子模式 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'];