Autor | Zpráva | ||
---|---|---|---|
HomerJay Profil |
#1 · Zasláno: 7. 7. 2010, 17:53:45
Nazdar :) Potreboval by som spraviť vyhľadávanie, ktoré by hľadalo frázy v jednom súbore - išlo by o nejaký povedzme .txt súbor, texty by boli zobrazené pod sebou, asi takto:
jeden text druhé slovo tretí text a ak užívateľ zadá do vyhľadávania slovo "text", nech mu to nájde práve tieto riadky - jeden text tretí text Ako spraviť formulár vyhľadávania alebo tento .txt súbor viem, potrebujem však (PHP) funkciu, ktorá mi to vyhľadávanie zaistí. MySQL ani Google search využívať nechcem, vďaka :) |
||
Mastodont Profil |
#2 · Zasláno: 7. 7. 2010, 18:05:12
Schematicky:
$pole = file( název souboru ); $co_hledam = "XY"; $vystup = Array(); foreach ($pole as $hodnota) { if ( strpos($hodnota, $co_hledam) !== false) { $vystup[] = $hodnota; } } print_r($vystup); |
||
HomerJay Profil |
#3 · Zasláno: 7. 7. 2010, 21:25:40
Vďaka, presne toto som mal namysli ;)
Ešte mám otázku - ako to urobiť podľa riadku? Teda nech mi nájde povedzme riadok 54. A rovnako tak - nech mi v tomto vyhľadávaní povie, ktorý riadok to je. Vďaka :D Mimochodom, urobil som si príklad. Súbor tr.txt obsahuje tieto riadky: trapas jedna netrapas dva neviemco tri trapas styri Použil som kód: $pole = file("tr.txt"); $co_hledam = "trapas"; $vystup = Array(); foreach ($pole as $hodnota) { if (strpos($hodnota, $co_hledam) !== false) { $vystup[] = $hodnota; } } print_r($vystup); A vypíše mi ako text toto: Array ( [0] => trapas jedna [1] => netrapas dva [2] => trapas styri ) Ako to využijem? Potrebujem to len vypísať pod sebou ako výsledky, to je všetko. |
||
dan55 Profil |
#4 · Zasláno: 7. 7. 2010, 22:01:36
$pole = file("tr.txt"); $co_hledam = "trapas"; $vystup = Array(); foreach ($pole as $hodnota) { if (strpos($hodnota, $co_hledam) !== false) { echo $hodnota."<br>"; } } ; |
||
Nox Profil |
#5 · Zasláno: 7. 7. 2010, 22:15:05
Podle očekávané náročnosti/velikosti by pak byla optimalizace brát jen po řádku, aby se nemuselo celé napchat do pole a pak zas zahodit
|
||
HomerJay Profil |
#6 · Zasláno: 8. 7. 2010, 10:37:23
Mastodont, dan55 - vďaka, ešte sa znovu pýtam, ako zistím číslo daného riadku?
echo $hodnota vypíše nájdený súbor, ešte potrebujem zistiť, na ktorom riadku sa nachádza - echo $hodnota.$riadok;, ako to mám zistiť? Je to možné cez PHP? Vďaka. |
||
panther Profil |
#7 · Zasláno: 8. 7. 2010, 10:39:41
HomerJay:
když nic jiného, můžeš si vytvořit proměnnou, kterou vždy na konci cyklu zvýšíš o jedna - tím dostaneš číslo řádku. |
||
HomerJay Profil |
#8 · Zasláno: 8. 7. 2010, 10:52:48
Ja len... či tu bude fungovať. Keď je v súbore:
este nic trapas jedna netrapas dva neviemco tri trapas styri Dám vyhľadať "trapas", nájde mi trapas jedna netrapas dva trapas styri A použijem premennú ako si povedal, bude to brať "trapas jedna" ako riadok prvý, aj keď prvý riadok bol pôvodne este nic. Nie? |
||
Mastodont Profil |
#9 · Zasláno: 8. 7. 2010, 11:02:01
Číslo řádku je v $pole, jen to chce upravit cyklus.
foreach ($pole as $radek => $hodnota) echo $radek +1; .. |
||
roberta Profil |
#10 · Zasláno: 8. 7. 2010, 11:02:06
HomerJay:
„A použijem premennú ako si povedal, bude to brať "trapas jedna" ako riadok prvý, aj keď prvý riadok bol pôvodne este nic. Nie?“ keď tú premennú budeš inkrementovať aj vypisovať v if, tak áno. ale keď ju budeš inkrementovať vo foreach a vypisovať v if, tak dostaneš číslo riadku v súbore. |
||
HomerJay Profil |
#11 · Zasláno: 8. 7. 2010, 11:05:58
Mastodont:
Vďaka ;) |
||
__construct Profil |
#12 · Zasláno: 8. 7. 2010, 11:10:09
Číslo riadku sa dá zistiť aj tým že budeš počítať \n (alebo \r\n - podľa toho v čom to ukladáš)
|
||
HomerJay Profil |
#13 · Zasláno: 8. 7. 2010, 11:19:03
Ukladám s \n.
Hlavne teraz potrebujem využiť tie riadky, ako mám teraz vyhľadať v súbore daný riadok? Povedzme že ide o iný súbor a chcem v ňom vyhľadať riadky, ktoré som teraz zistil - scriptom ktorý ste mi poradili. Niečo ako foreach($pole as $radek => $hodnota) { if(strpos($hodnota, $co_hledam) !== false) { $radek++; foreach($pole2 as $radek2) { $radek2++; if($radek2 == $radek) { echo '<a href="">'.$hodnota."</a><br>"; } } } } Akurát to asi určite nefunguje :D |
||
Časová prodleva: 1 rok
|
|||
Lilly Profil * |
#14 · Zasláno: 10. 9. 2011, 15:56:27
A ako to iste urobim v HTML?
|
||
HomerJay Profil |
#15 · Zasláno: 10. 9. 2011, 15:58:39
Neurobíš. Musíš použiť PHP.
|
||
DoubleThink Profil * |
#16 · Zasláno: 10. 9. 2011, 16:08:41
Drobná poznámka - není důvod načíst celý soubor do paměti, když v něm pracuješ v samostatných řádcích. Správný postup je nebýt líný a otevřít soubor klasickým fopen a pak jej cyklicky číst po řádcích funkcí fgets.
|
||
HomerJay Profil |
#17 · Zasláno: 10. 9. 2011, 21:56:16
Presne tak som to potom začal robiť, topic je rok starý.
... dokelu jak ten čas letí. |
||
Časová prodleva: 13 let
|
0