如果找到它,搜索字符串中的模式和echo

时间:2013-08-29 13:46:25

标签: php preg-match

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

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

如果它包含模式,则返回1,但我想返回该结果而不是一个。因此,如果$_POST['Description']包含例如#123,我想返回#123而不是1.任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

如果查看preg_match的手册,你会发现它将匹配放在第3个参数的引用变量中:

  

int preg_match(string $ pattern,string $ subject [,array& $ 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