Autor | Zpráva | ||
---|---|---|---|
oberon Profil * |
#1 · Zasláno: 20. 4. 2009, 14:18:02
Zdravím vás,
vytvořil jsem si v php vyhledávání řetězců z databáze, ovšem narazil jsem na jeden problém. V jednom sloupci databáze je text dlouhý cca 1000 znaků a při vyhledání ho nechám zobrazit celý, což se nakonec ukázalo jako nedobré řešení a tak jsem nechal funkcí substr zobrazovat jen prvních 50 znaků, což už se jevilo jako schůdnější řešení. Ovšem co si nebohý uživatel počne, když použije vyhledávání, script něco v databázi najde, vypíše prvních 50 znaků, ale ten hledaný řetězec tam není? Dalo by se nějak efektivně vyřešit, aby např. ten hledaný řetězec (řekněme např. "pravda") zobrazil v tom výsledku (v těch 50 znacích)? Takže místo toho, aby to vypsalo: "Tak tohle je už vážně na pováženou, to snad" vypsalo "..je už vážně na pováženou, to snad není pravda.." Snad jsem to napsal tak, že mne pochopíte :-) Díky za rady! |
||
ninja Profil |
#2 · Zasláno: 20. 4. 2009, 14:28:05
Z databaze nactete text a na 50 znaku omezite az v aplikaci?
Pak nezobrazujte prvnich 50 znaku, ale 50 znaku od prvni pozice hledaneho textu - 25 znaku. |
||
Joker Profil |
#3 · Zasláno: 20. 4. 2009, 14:33:24
oberon
Možná by to šlo nějak takhle: SELECT IF(INSTR(text, "co hledám") > 40, SUBSTR(text, (INSTR(text, "co hledám") - 25), 50), SUBSTR(text, 0, 50)) FROM tabulka WHERE text LIKE "%co hledám%" ...ale fakt jen tipuju :-) |
||
oberon Profil * |
#4 · Zasláno: 20. 4. 2009, 17:19:43
„Z databaze nactete text a na 50 znaku omezite az v aplikaci?“
ano, přesně tak :-) „Pak nezobrazujte prvnich 50 znaku, ale 50 znaku od prvni pozice hledaneho textu - 25 znaku.“ ... a právě to mi dělá starosti. Motám se v tom, jako vítr v bedně, ale nemůžu na to prostě přijít :-( |
||
ninja Profil |
#5 · Zasláno: 20. 4. 2009, 18:33:04
oberon: tak si precte co delaji funkce strpos a substr. Zbytek je proste jednoduche odcitani a deleni:
1. Pomoci strpos najdu prvni vyskyt. 2. Od jeho pozice odectu 25 (pripadne 25 - polovina delky hledaneho slova). 3. Pres substr zobrazim cast text zacinajici cislem vypoctenym v bode 2 a o pozadovane delce 50 znaku. Pokud pracujete v UTF-8, nezapomente pouzit patricne verze funkci mb_*. |
||
oberon Profil * |
#6 · Zasláno: 21. 4. 2009, 06:35:33
ninja
ano ano, to je přesně ono. Marně jsem hledal fci strpos. Díky za nakopnutí :-) |
||
Časová prodleva: 15 let
|
0