Php 在字符串中标识电话号码

Php 在字符串中标识电话号码,php,regex,preg-match-all,Php,Regex,Preg Match All,我正在使用以下代码检测字符串是否是电话号码 <?php $text = "example467676@gmail.com" ; if (preg_match_all('/\+?[0-9][0-9()-\s+]{4,20}[0-9]/',$text)){ echo "phone number"; }else{ echo "not a phone number"; } ?> 问题是我得到的是电话号码而不是电话号码。。。我怎样才能解决这个问题。。。任何帮助都将

我正在使用以下代码检测字符串是否是电话号码

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/\+?[0-9][0-9()-\s+]{4,20}[0-9]/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


问题是我得到的是
电话号码
而不是电话号码。。。我怎样才能解决这个问题。。。任何帮助都将不胜感激。

如果我正确理解您的问题,您在示例中得到的正则表达式将返回匹配项,即使有人输入带有数字的电子邮件地址,就像您在那里一样

仅使用
^
$
匹配行的开头和结尾以避免此情况:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('^/\+?[0-9][0-9()-\s+]{4,20}[0-9]$/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


工作示例:

如果我正确理解了您的问题,那么您在示例中得到的正则表达式将返回匹配项,即使有人输入带有数字的电子邮件地址,就像您在那里一样

仅使用
^
$
匹配行的开头和结尾以避免此情况:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('^/\+?[0-9][0-9()-\s+]{4,20}[0-9]$/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


工作示例:

如果我正确理解了您的问题,那么您在示例中得到的正则表达式将返回匹配项,即使有人输入带有数字的电子邮件地址,就像您在那里一样

仅使用
^
$
匹配行的开头和结尾以避免此情况:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('^/\+?[0-9][0-9()-\s+]{4,20}[0-9]$/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


工作示例:

如果我正确理解了您的问题,那么您在示例中得到的正则表达式将返回匹配项,即使有人输入带有数字的电子邮件地址,就像您在那里一样

仅使用
^
$
匹配行的开头和结尾以避免此情况:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('^/\+?[0-9][0-9()-\s+]{4,20}[0-9]$/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


工作示例:

问题在于,
{4,20}
将匹配前面块出现4到20次的任何字符串,因此它匹配示例电子邮件地址中的数字。试试这个:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^\+?([0-9-]|\s|\([0-9]+\)){4,20}[0-9]/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


请注意,
preg\u match\u all
在PHP<5.4中需要3个参数。

问题是,
{4,20}
将匹配前面块出现4到20次的任何字符串,因此它匹配示例电子邮件地址中的数字。试试这个:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^\+?([0-9-]|\s|\([0-9]+\)){4,20}[0-9]/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


请注意,
preg\u match\u all
在PHP<5.4中需要3个参数。

问题是,
{4,20}
将匹配前面块出现4到20次的任何字符串,因此它匹配示例电子邮件地址中的数字。试试这个:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^\+?([0-9-]|\s|\([0-9]+\)){4,20}[0-9]/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>


请注意,
preg\u match\u all
在PHP<5.4中需要3个参数。

问题是,
{4,20}
将匹配前面块出现4到20次的任何字符串,因此它匹配示例电子邮件地址中的数字。试试这个:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^\+?([0-9-]|\s|\([0-9]+\)){4,20}[0-9]/',$text)){
    echo "phone number";    
}else{
    echo "not a phone number";
}
?>

请注意,
preg\u match\u all
在PHP<5.4中需要3个参数。

从第一个匹配开始,直到最后一个匹配

在这种情况下,第一个匹配将是
4
,它将持续到
6
。忽略所有其他字符

要使其从头开始,请在正则表达式之前使用
^
线锚的开头)。并强制它继续,直到在正则表达式的末尾放置
$
行结束锚点

像这样:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^+?[0-9][0-9()-\s+]{4,20}[0-9]/$', $text)) {
  echo "phone number";  
} else{
  echo "not a phone number";
}
?>

从第一个匹配开始,直到最后一个匹配

在这种情况下,第一个匹配将是
4
,它将持续到
6
。忽略所有其他字符

要使其从头开始,请在正则表达式之前使用
^
线锚的开头)。并强制它继续,直到在正则表达式的末尾放置
$
行结束锚点

像这样:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^+?[0-9][0-9()-\s+]{4,20}[0-9]/$', $text)) {
  echo "phone number";  
} else{
  echo "not a phone number";
}
?>

从第一个匹配开始,直到最后一个匹配

在这种情况下,第一个匹配将是
4
,它将持续到
6
。忽略所有其他字符

要使其从头开始,请在正则表达式之前使用
^
线锚的开头)。并强制它继续,直到在正则表达式的末尾放置
$
行结束锚点

像这样:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^+?[0-9][0-9()-\s+]{4,20}[0-9]/$', $text)) {
  echo "phone number";  
} else{
  echo "not a phone number";
}
?>

从第一个匹配开始,直到最后一个匹配

在这种情况下,第一个匹配将是
4
,它将持续到
6
。忽略所有其他字符

要使其从头开始,请在正则表达式之前使用
^
线锚的开头)。并强制它继续,直到在正则表达式的末尾放置
$
行结束锚点

像这样:

<?php
$text = "example467676@gmail.com" ;
if (preg_match_all('/^+?[0-9][0-9()-\s+]{4,20}[0-9]/$', $text)) {
  echo "phone number";  
} else{
  echo "not a phone number";
}
?>



是否要检查某人是否在其电子邮件地址中使用了电话号码?那不太好。我是说电话号码而不是电子邮件地址…看看如果有人的电子邮件地址是'peterpan201344',这就是问题所在@Amalmurali是否要检查某人是否在其电子邮件地址中使用了电话号码?那不太好。我是说电话号码而不是电子邮件地址…看看如果有人的电子邮件地址是'peterpan201344',这就是问题所在@Amalmurali是否要检查某人是否在其电子邮件地址中使用了电话号码?那不太好。我是说电话号码而不是电子邮件地址…看看如果有人的电子邮件地址是'peterpan201344',这就是问题所在@Amalmurali是否要检查某人是否在其电子邮件地址中使用了电话号码?那不太好。我是说电话号码而不是电子邮件地址…看看如果有人的电子邮件地址是'peterpan201344',这就是问题所在@Amalmurali你的代码很好,但问题是我没有电话