$regex = '/'.implode('|', 10).'/i';
preg_match($regex, $ids)
找到的ID($ IDS)的列表中的号码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++;
}
,我主要是通过具有一个ID列一个CSV生根(一些行在该列中具有多个ID,由逗号分隔)和sku列。更多信息here
所以我需要代码来检查特定ID的id字符串,例如10,然后将相应的SKU添加到sku数组中。
我敢肯定这段代码是一团糟,所以忍着我,而我劈开PHP的位!
编辑:现已解决!正如答案中所提到的,我使用了in_array。首先我爆炸逗号分开的字符串。代码可以看到下面:
$skus = array();
while (($line = fgetcsv($file)) !== FALSE) {
list($ids, $sku) = $line;
$cats = explode(',',$ids);
if (in_array($_GET['id'], $cats)) {
$skus[] = $sku;
}
}
感谢您的帮助所有。
你为什么不使用in_array(“10”,阵列(..... ),是)? –
对不起,我已经意识到我的问题并没有超出上下文的意义。你的答案可能会导致我找到解决方案。我将很快发布一个响应 –
您可能需要考虑使用mysql或类似的数据库。更快/更容易。 – dqhendricks