я использую
$regex = '/'.implode('|', 10).'/i'; preg_match($regex, $ids)
найти число 10 в списке идентификаторов ($ ids). Однако, если список идентификаторов выглядит следующим образом:
$ids = array(10, 110, 1010);
Приведет ли их все? Как я могу заставить его найти точное число, которое я получил, а не просто найти номер, который содержит номер, который я за ним?
Благодарю.
Редактировать:
Я сделал ошибку выше. Список идентификаторов фактически представляет собой строку значений, разделенных запятыми. Например:
$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, у которого есть столбец идентификатора (некоторые строки имеют несколько идентификаторов в этом столбце, пропущены запятыми) и столбец sku. Больше информации здесь
Поэтому мне нужен код для проверки строки идентификаторов для определенного 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; } }
Спасибо за помощь всем.