我遇到以下问题:我需要检查字符串是否包含任何模式字符串,如果存在则回显结果。
$searching_post = preg_match("/#([0-9]{3,8})/", $_POST['Description']);
如果它包含模式,则返回1,但我想返回该结果而不是一个。因此,如果$_POST['Description']
包含例如#123,我想返回#123而不是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