Graf_Vorontsov
Новичок
Делаю поиск (он ещё пока не окончен полностью, но работает уже с частью номеров которые хочу искать).
Файл 33.csv содержит каталожные номера с ценами и названиями.
Имеется форма поиска в которую вводится искомый номер детали(она в отдельном файле).
хотел бы получить маленькую консультацию у знатоков. Заранее спасибо.
1) как можно в регулярном выражении записать жёсткое соответствие конкретным символам(например мне надо проверять есть ли в строке 357256222RE01C конкретная последовательность символов в данном случае 01C, эти символы всегда в конце, их всегда 3, но они могут быть и разными напр. 2ZZ, 1UT).
пытался писать так
вот этим (01C|2ZZ$) я пытался сделать выбор..но как-то не так работает! Т.к. предыдущий аргумент может быть или 357256222RE01C или 357256222E01C(т.е. или RE присутствует или только E). И мне выводит не то шо надо. Скрипт начинает игнорировать 4-й аргумент.... Пришлось побороть такой конструкцией:
но это как-то на мой взгляд через ж***
Может есть цивилизованное решение?
2) В мануале пишут что preg_replace может содержать регулярное выражение и в шаблоне поиска и в шаблоне подстановки... Я почемуто не пойму как заставить работать регулярку в шаблоне подстановки.
И где можно почитать конкретно про правила написания шаблона подстановки?
3) Я так и не понял как можно сравнить значения если символ не дописан?! Т.е по регулярке он прошёл, записался в $return , а дальше сравнивается с моими значениями в массиве
и не проходит потому что символ не дописан. Как этого избежать? Т.е. как заставить искать все совпадения до конкретного символа?
Файл 33.csv содержит каталожные номера с ценами и названиями.
Имеется форма поиска в которую вводится искомый номер детали(она в отдельном файле).
хотел бы получить маленькую консультацию у знатоков. Заранее спасибо.
PHP:
<?php
$handle = fopen("33.csv", "r");
echo "<center><table width=40% border=1 cellspacing=0 cellpadding=2>";
echo "<caption>Наличие запчастей на складе</caption>";
echo "<tr><td>Оригинальный №</td><td>Неоригинальный №</td><td>Наименование</td><td>Производитель</td><td>Цена</td></tr>";
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
echo "<tr>";
//проверка на наличие в строке определённых символов
if (strstr($_REQUEST['number'],'01C')){
$return = preg_replace('/^([\w\d]{3})\s*([\d]{3})\s*([\d+]{3})\s*([\w]{1,2})?\s*([\w\d]{3})*$/si', '$1 $2 $3 $4 01C', $_REQUEST['number']);
$return = str_replace(" "," ", $return);
// если код 01C
} elseif (strstr($_REQUEST['number'],'2ZZ')){
$return = preg_replace('/^([\w\d]{3})\s*([\d]{3})\s*([\d+]{3})\s*([\w]{1,2})?\s*([\w\d]{3})*$/si', '$1 $2 $3 $4 2ZZ', $_REQUEST['number']);
$return = str_replace(" "," ", $return);
// если код 2ZZ
} elseif (strstr($_REQUEST['number'],'2ER')){
$return = preg_replace('/^([\w\d]{3})\s*([\d]{3})\s*([\d+]{3})\s*([\w]{1,2})?\s*([\w\d]{3})*$/si', '$1 $2 $3 $4 2ER', $_REQUEST['number']);
$return = str_replace(" "," ", $return);
// если код 2ER
} else
//во всех остальных случаях без кода цвета
$return = preg_replace('/^([\w\d]{3})\s*([\d]{3})\s*([\d]{3})\s*([\w]{1,2})?\s*$/si', '$1 $2 $3 $4', $_REQUEST['number']);
foreach($data as $value) {
if(in_array((strtoupper(trim($return))), $data)) {
//проверка. введены ли данные в поле поиска
if (!empty($return)and isset($return)){
echo "<td>$value</td>"; //если введены данные, выдать найденый результат
} else {
exit("<br><h2><font color=red>Вы ничего не ввели </font></h2><br /><br />"); //если ничего не ввели в поле поиска
}
}
}
echo "</tr>";
}
echo "</table></center>";
fclose($handle);
?>
пытался писать так
PHP:
preg_replace('/^([\w\d]{3})\s*([\d]{3})\s*([\d]{3})\s*(\w{1,2})*\s*(01C|2ZZ$)*/si', '$1 $2 $3 $4 $5', $request_number);
PHP:
if (strstr($_REQUEST['number'],'01C')){
$return = preg_replace('/^([\w\d]{3})\s*([\d]{3})\s*([\d+]{3})\s*([\w]{1,2})?\s*([\w\d]{3})*$/si', '$1 $2 $3 $4 01C', $_REQUEST['number']);
$return = str_replace(" "," ", $return);

2) В мануале пишут что preg_replace может содержать регулярное выражение и в шаблоне поиска и в шаблоне подстановки... Я почемуто не пойму как заставить работать регулярку в шаблоне подстановки.
И где можно почитать конкретно про правила написания шаблона подстановки?
3) Я так и не понял как можно сравнить значения если символ не дописан?! Т.е по регулярке он прошёл, записался в $return , а дальше сравнивается с моими значениями в массиве
PHP:
if(in_array((strtoupper(trim($return))), $data))