0

我有以下问题:我需要检查字符串是否包含任何模式字符串,如果包含则回显结果。

$searching_post = preg_match("/#([0-9]{3,8})/", $_POST['Description']);

如果它包含模式,这将返回 1,但我想返回该结果而不是一个。因此,如果$_POST['Description']包含例如 #123 我想返回 #123 而不是 1。有人知道该怎么做吗?

4

1 回答 1

2

如果您查看手册,preg_match您会发现它将匹配项放入第三个参数中的引用变量中:

int preg_match ( 字符串 $pattern , 字符串 $subject [, 数组 &$matches [, int $flags = 0 [, int $offset = 0 ]]] )


如果模式匹配给定的主题,preg_match() 返回 1,如果不匹配,则返回 0,如果发生错误,则返回 FALSE。


所以代码应该是这样的:

$searching_post = null;
if (preg_match("/#([0-9]{3,8})/", $_POST['Description'], $matches)) {
    $searching_post = $matches[1];
}
var_dump($searching_post); //will be NULL if nothing was found
于 2013-08-29T13:48:54.273 回答