preg_match exact number(匹配精确数字(_M))
本文介绍了匹配精确数字(_M)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用
$regex = '/'.implode('|', 10).'/i';
preg_match($regex, $ids)
在ID列表($ID)中查找数字10。但是,如果ID列表如下所示:
$ids = array(10, 110, 1010);
会把他们全部带回来吗?我如何才能使它找到我要查找的确切数字,而不仅仅是找到包含我要查找的数字的数字?
谢谢。
编辑:
我在上面犯了一个错误。ID列表实际上是逗号分隔值的字符串。例如:
$ids = "10,1010,101";
很难解释这背后的整个想法过程,但这是我的完整代码:
<?php
$file = fopen('allprods.csv', 'r');
$id = array($_GET['id']);
$id = array_map('preg_quote', $id);
$regex = '/'.implode('|', $id).'/i';
$skus = array();
while (($line = fgetcsv($file)) !== FALSE) {
list($ids, $sku) = $line;
if(preg_match($regex, $ids)) {
$skus[] = $sku;
}
}
$count = count($skus);
$i = 1;
echo $category_id;
foreach ($skus as $sku){
echo $sku;
if($i != $count) { echo "`"; }
$i++;
}
我实际上是在遍历一个CSV,它有一个ID列(有些行在该列中有多个ID,以逗号开头)和一个sku列。更多信息here
因此,我需要代码来检查特定ID的ID字符串,例如10,然后将适当的SKU添加到sku数组中。
我敢肯定这段代码是一团糟,所以请原谅我,让我把PHP分解成碎片!
编辑:现在问题已解决!正如答案中所提到的,我使用的是inarray值。首先,我分解了逗号分隔的字符串。代码如下:
$skus = array();
while (($line = fgetcsv($file)) !== FALSE) {
list($ids, $sku) = $line;
$cats = explode(',',$ids);
if (in_array($_GET['id'], $cats)) {
$skus[] = $sku;
}
}
感谢大家的帮助。
推荐答案
不要为此使用正则表达式。使用in_array()
if( in_array(10, $ids) ) {
// do something
}
else {
// not found
}
这篇关于匹配精确数字(_M)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:匹配精确数字(_M)
基础教程推荐
猜你喜欢
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01