Поиск текста в файле.

seosniks
На сайте с 13.08.2007
Offline
389
1009

Подскажите как не используя sql сделать поиск,

базой будет файл.

в базе будут слова начинающиеся на больщую букву A_Z

так вот? как выбрать например при запросе

index.php?litera=A выбрать все строки начинающиеся на букву A

Я думаю что регуляркой обработать и получить все что имеет первую A итд.

Abramov

Alesis

Anker

Andrey mironov

Anatoliy

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

ну как бЭ в массив file() а потом if ($mass[0]==GET[litera])

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
mfl
На сайте с 16.10.2006
Offline
134
mfl
#2

<?php

$text = file_get_contents('file.txt');
$litera = preg_quote($_GET['litera']);
preg_match_all('~^'.$litera.'[^\n]*~m', $text, $out);
print_r($out[0]);
?>

можно сделать одной строкой

mfl добавил 30.07.2011 в 13:13

либо разбивать в массив и фильтровать элементы, как предложил LEOnidUKG

только там $mass{0} - первый символ в строке

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3
mfl:


mfl добавил 30.07.2011 в 13:13
либо разбивать в массив и фильтровать элементы, как предложил LEOnidUKG
только там $mass{0} - первый символ в строке

Скобочки я проставил верно.

mfl
На сайте с 16.10.2006
Offline
134
mfl
#4

так нас интересует только первый символ, Вы сравниваете всю строку

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5
mfl:
так нас интересует только первый символ, Вы сравниваете всю строку

боже мой, ну почему всегда приходится писать всё...

$bukva=$_GET['literal'];

$file=file('slova.txt');

foreach ($file as $mass)

{

if ($mass[0]==$bukva) {$stroka[]=$mass;}

}

print_r($stroka);

LEOnidUKG добавил 30.07.2011 в 13:25

Если слов будет более 200 000, то тогда лучше создать ассоциативный массив из Первых букв и слов, ну или как-то там с ними что-то придумать :)

mfl
На сайте с 16.10.2006
Offline
134
mfl
#6

$mass - это строка, не массив

$file - массив со строками

$mass[0] - нет такого элемента

$mass{0} - первый символ в строке

http://www.php.net/manual/ru/function.substr.php

seosniks
На сайте с 13.08.2007
Offline
389
#7

Всем спасибо за помощь, сделал так

 $arr=file("h.txt");

foreach ($arr as $k=>$v) {
if ($v[0] ==$_GET['h'])
{ echo " $v <br />";}}
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#8
mfl:
$mass - это строка, не массив
$file - массив со строками

$mass[0] - нет такого элемента
$mass{0} - первый символ в строке

убейтесь а? Вот возьмите код:

$p="123456789";

echo $p[0];

И вы будете наверное ШОКИРОВАНЫ, что выведет вам пхп

mfl
На сайте с 16.10.2006
Offline
134
mfl
#9

LEOnidUKG, вы правы

Доступ к символу в строке и его изменение

Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля, в фигурных скобках после строки.

Замечание: Для обеспечения обратной совместимости, вы по-прежнему имеете возможность использовать в тех же целях скобки массива. Однако, начиная с PHP 4, этот синтаксис нежелателен к использованию.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий