|
|
|
| Есть фаил base.txt в котором хранятся: исполнитель|название песни|имя фаила в одну строку
типа:
cплин|мое сердце|splin.mp3
сплин|выхода нет|splin2.mp3
и т.д.
Помогите пожалуйста написать такой скрипт для поиска что бы он обрабатывал этот фаил "base.txt" и в цыкле выводил найденные совпадения (если скрипт нашол хотя бы одно совпадение то должен взять инфу из этой строки) в таблице в таком виде:
|Сплин | Выхода Нет | Скачать(на ссылку прописывается имя фаила "splin2.mp3") |
понятно объяснил:)))? | |
|
|
|
|
|
|
|
для: dron
(15.10.2005 в 00:44)
| | Не имеет значение по какому полю искать? Т.е. искать по всей строке, а не по первому, второму и третьему столбцу раздельно? | |
|
|
|
|
|
|
|
для: cheops
(15.10.2005 в 00:54)
| | Да искать сразу по всей строке, раздельно по столбцам искать не надо. | |
|
|
|
|
|
|
|
для: dron
(15.10.2005 в 01:01)
| | Следует отталкиваться от примерно такого скрипта
<?php
// То, что ищем
$search = "сплин";
// Помещаем содержимое текстового
// файла в массив - каждый элемент
// соответствует строке
$arr = file("base.txt");
// В цикле ищем вхождение
foreach($arr as $line)
{
if(strpos($line,$search) !== false) $tmp[] = $line;
}
// Выводим результат
foreach($tmp as $line)
{
list($singer, $song, $url) = explode("|",$line);
echo "<a href=$url>".$singer." (".$song.")</a><br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(15.10.2005 в 01:15)
| | Большое спасибо!!!!!!!!!!!!!!!!!! | |
|
|
|
|
|
|
|
для: dron
(15.10.2005 в 01:28)
| | А можно ещё так сделать что бы он искал только в имени исполнителя и названии песни,
а в имени фаила и негде больше не искал. | |
|
|
|
|
|
|
|
для: dron
(16.10.2005 в 00:22)
| | Для этого его следует модифицировать следующим образом
<?php
// То, что ищем
$search = "сплин";
// Помещаем содержимое текстового
// файла в массив - каждый элемент
// соответствует строке
$arr = file("base.txt");
// В цикле ищем вхождение
foreach($arr as $line)
{
list($singer, $song, $url) = explode("|",$line);
if(strpos($singer." ".$song,$search) !== false) $tmp[] = $line;
}
// Выводим результат
foreach($tmp as $line)
{
list($singer, $song, $url) = explode("|",$line);
echo "<a href=$url>".$singer." (".$song.")</a><br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.10.2005 в 14:06)
| | а как сделать так что бы скрипт поиска не обращал внимание на регистр:
Есть "Text", если задать поиск слова 'text' то его не находит, как это исправить | |
|
|
|
|
|
|
|
для: dron
(18.10.2005 в 00:05)
| | Как вариант: обрабатывать строки функцией strtolower; | |
|
|
|
|
|
|
|
для: Царь
(18.10.2005 в 03:44)
| | А по другому никак?
с функцией strtolower замучался никак она не работает на сервере jino-net.ru
на компе работает а там нет(с английскими буквами работает т.е. переводит их в нижний регистр а с русскими нет), подскажите что нибудь | |
|
|
|
|
|
|
|
для: dron
(19.10.2005 в 00:33)
| | Тогда воспользуйтесь регулярным выражением, замените строку
<?php
if(strpos($singer." ".$song,$search) !== false) $tmp[] = $line;
?>
|
на
<?php
if(preg_match("|".$search."|i"$singer." ".$song)) $tmp[] = $line;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(19.10.2005 в 14:03)
| | Появляется ошибка ;
Parse error: parse error, unexpected T_VARIABLE in z:\home\localhost\www\other\t\poisk.php on line 13
Правка её устранил , но припоиске выскакивают такие
Warning: preg_match() expects at least 2 parameters, 1 given in /home/users/l/lifemp3/docs/poisk.php on line 13
Warning: preg_match() expects at least 2 parameters, 1 given in /home/users/l/lifemp3/docs/poisk.php on line 13 | |
|
|
|
|
|
|
|
для: dron
(19.10.2005 в 23:37)
| | Подскажите что нибудь | |
|
|
|
|
|
|
|
для: dron
(19.10.2005 в 23:37)
| | А, да, я забыл запятую
<?php
if(preg_match("|".$search."|i", $singer." ".$song)) $tmp[] = $line;
?>
|
| |
|
|
|