Php 如何检测字符串中是否存在给定的数字

Php 如何检测字符串中是否存在给定的数字,php,string,Php,String,我需要验证字符串中是否存在数字。这是我使用的代码: $line='1'; $a=1; echo strpos($line, $a); if (strpos($line, 1) !== false) { echo 'ok'; } 我也试过: $line='1'; $a=1; echo strpos($line, $a); if (strpos($line, 1+'0') !== false) { echo 'ok'; } 但是,无论哪种情况,它都不起作用。也许您可以使用php函

我需要验证字符串中是否存在数字。这是我使用的代码:

$line='1';
$a=1;
echo strpos($line, $a);
if (strpos($line, 1) !== false) {
    echo 'ok';
}
我也试过:

$line='1';
$a=1;
echo strpos($line, $a);
if (strpos($line, 1+'0') !== false) {
    echo 'ok';
}

但是,无论哪种情况,它都不起作用。

也许您可以使用php函数,检查数字是否在
ASCII
的范围内。

也许您可以使用php函数,检查数字是否在
ASCII
的范围内。

来自:

如果指针不是字符串,则将其转换为整数并作为字符的序数值应用

由于您将
1
作为
指针传递
,因此它将被转换为具有该代码的字符,即
Control-A
。所以它不是在字符串中查找数字
1
。如果要查找字符
1
,必须使用字符串,而不是整数:

$a = '1';
echo strpos($line, $a);
if(strpos($line, '1') !== false) {
    echo 'ok';
}
如果最初给您一个数字,您可以使用
strval()
将其转换为字符串:

从:

如果指针不是字符串,则将其转换为整数并作为字符的序数值应用

由于您将
1
作为
指针传递
,因此它将被转换为具有该代码的字符,即
Control-A
。所以它不是在字符串中查找数字
1
。如果要查找字符
1
,必须使用字符串,而不是整数:

$a = '1';
echo strpos($line, $a);
if(strpos($line, '1') !== false) {
    echo 'ok';
}
如果最初给您一个数字,您可以使用
strval()
将其转换为字符串:


strpos在字符串上工作。如果你这样做

$line='1234';
$a='1';
echo strpos($line, '1');
if(strpos($line, '1') !== false){
    echo 'ok';
}


它将在字符串上工作。如果你这样做

$line='1234';
$a='1';
echo strpos($line, '1');
if(strpos($line, '1') !== false){
    echo 'ok';
}


它将工作

strpos接受三个参数,其中第三个参数是可选的,即
strpos(字符串、查找、开始)
。此处,find应为字符串类型。如果它不是字符串类型,则将其转换为整数并作为字符的序数值应用。表示它接受其ascii值字符。例如

$string="ABC";
$find=65;
$pos=strpos($string,$find);
echo $pos

Output:
0
i、 e字符“A”的位置,因为65是“A”字符的ASCII值。 因此,当您将整数值1传递给
strpos
函数时,它将转换为某种ASCII字符,在您的情况下,它将返回false。
strpos
函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。因此,使用
==
操作符测试此函数的返回值


要使代码正常工作,必须将整数类型转换为字符串类型。

strpos接受三个参数,其中第三个参数是可选的,即
strpos(字符串、查找、开始)
。此处,find应为字符串类型。如果它不是字符串类型,则将其转换为整数并作为字符的序数值应用。表示它接受其ascii值字符。例如

$string="ABC";
$find=65;
$pos=strpos($string,$find);
echo $pos

Output:
0
i、 e字符“A”的位置,因为65是“A”字符的ASCII值。 因此,当您将整数值1传递给
strpos
函数时,它将转换为某种ASCII字符,在您的情况下,它将返回false。
strpos
函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。因此,使用
==
操作符测试此函数的返回值


要使代码正常工作,您必须将整数类型转换为字符串类型。

我肯定不知道这两种方法有什么不同。请尝试
if(strpos($line,'1')!==false){
。此处:(它不显示“ok”部分,因此您可以看到差异。)很抱歉,我忘记了第二个ifI中的“0”必须缺少这两种方式的不同之处。请尝试
if(strpos($line,'1')!==false){
。此处:(它不显示“ok”部分,因此您可以看到差异。)很抱歉,我忘记了第二个if中的“0”