Php 如果数字有内部数字字符串

Php 如果数字有内部数字字符串,php,mysql,Php,Mysql,我想用php在数据库中找到一个稳定的数字,如果里面有长的数字 例如: Stable number: 150 Number list: 1568940, 545198650, 15580 我能在号码表里找到号码吗 像这样: (1)(5)6894(0) = 150 have that 150 string 545(1)986(5)(0) = 150 have that 150 string (1)(5)58(0) = 150 have that 150 string 可能

我想用php在数据库中找到一个稳定的数字,如果里面有长的数字

例如:

Stable number: 150

Number list: 1568940, 545198650, 15580
我能在号码表里找到号码吗

像这样:

   (1)(5)6894(0) = 150 have that 150 string
   545(1)986(5)(0) = 150 have that 150 string 
   (1)(5)58(0) = 150 have that 150 string 

可能吗

当然,您可以对这些字符串执行正则表达式搜索,但是在具有大型数据集的数据库中执行此操作可能会花费相当大的成本

$subjects = ["1568940","545198650", "15580", "5551000", "015", "1805"];

foreach ($subjects as $subject) {
    if (preg_match("/(1)\d*(5)\d*(0)\d*/", $subject, $match) && count($match) == 4) {
        echo "$subject contains string 150\n";
    } else {
        echo "$subject does not contain string 150\n";
    }
}
这将为您提供以下输出

1568940包含字符串150

545198650包含字符串150

15580包含字符串150

5551000不包含字符串150

015不包含字符串150

1805不包含字符串150

在MySQL中

SELECT fieldname FROM table WHERE fieldname REGEXP "(1)*(5)*(0)*";

如果您能更详细地解释如何获取这些数据以及为什么需要识别这些数据是否包含这些字符,可能会有所帮助。

我不明白,您是如何从第一对中获取这些数字的?或者db有
(1)(5)6894(0)
,您只需要
()
中的值?您可以检查字符串是否包含1、5、0。如果是的话,这意味着它包含150个。首先手工写出过程,然后将其转化为代码。@LeonKunštek
501510105051
都通过了你的测试,但没有通过OP的要求。@Sammitch我知道,但这是你可以建立的起点。好的,这是OP的下一个家庭作业问题,因为它对您也很有价值:现在,我们不需要检查
150
,而是要检查任意数字字符串。继续使用正则表达式将被扣分。