如何使用preg_match提取数据?

时间:2013-08-03 17:33:45

标签: php regex preg-match

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

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

[#1234] Subject

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

5 个答案:

答案 0 :(得分:4)

一个解决方案是:

\[#(\d+)\]

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

您可以使用它:

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

您可以在this demo中看到它。

答案 1 :(得分:2)

你可以试试这个:

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

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

(?=..)是未来的

答案 2 :(得分:1)

你的正则表达式:

preg_match('/^\[\#([0-9]+)\].+/i', $string, $array);

答案 3 :(得分:1)

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

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

echo $matches[1]; // 1234
?>

答案 4 :(得分: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'];