我有以下问题:我需要检查字符串是否包含任何模式字符串,如果包含则回显结果。
$searching_post = preg_match("/#([0-9]{3,8})/", $_POST['Description']);
如果它包含模式,这将返回 1,但我想返回该结果而不是一个。因此,如果$_POST['Description']
包含例如 #123 我想返回 #123 而不是 1。有人知道该怎么做吗?
我有以下问题:我需要检查字符串是否包含任何模式字符串,如果包含则回显结果。
$searching_post = preg_match("/#([0-9]{3,8})/", $_POST['Description']);
如果它包含模式,这将返回 1,但我想返回该结果而不是一个。因此,如果$_POST['Description']
包含例如 #123 我想返回 #123 而不是 1。有人知道该怎么做吗?
如果您查看手册,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