Autor | Zpráva | ||
---|---|---|---|
Kasta Profil * |
#1 · Zasláno: 18. 10. 2011, 08:32:39
Ahoj,
potreboval bych poradit jak v php ze souboru precist jen urcitou cast napr. mam soubor: nazev.txt a potrebuju z nej zjistit co je napsano nekde uprostred klidne mezi nejakymi tagy nebo tak, ale nemuzu pouzit vzdalenost od zacatku protoze se porad meni. Jestli to nejak vubec jde? V horsim pripade pouziju databazi. Dekuji za odpovedi. Omlouvam se za psani bez diakritiky. |
||
okolojdouci Profil * |
#2 · Zasláno: 18. 10. 2011, 08:44:26
Kasta:
„zjistit co je napsano nekde uprostred“ Jde to. |
||
Kasta Profil * |
#3 · Zasláno: 18. 10. 2011, 09:01:22
A poradite mi nekdo jak? Prosim.
|
||
Joker Profil |
#4 · Zasláno: 18. 10. 2011, 09:17:15
Kasta:
Obsah souboru se dá přečíst jako řetězec a pak jde o nalezení něčeho v řetězci. V závislosti na tom jak vypadá to „něco“ jde použít strpos a substr, případně preg_match Pokud ale jde o práci s nějakým konkrétním formátem (například XML, ini, CSV a podobně), je lepší použít parser přímo toho daného formátu. |
||
Kasta Profil * |
#5 · Zasláno: 18. 10. 2011, 12:14:09
Dekuji za radu uz to chapu ale jeste aby se to zastavilo tam kde chci. Skousel jsem to resit takto ale to nejde.
$soubor=fopen("$jmeno_stranky.txt", "r"); $text = fread($soubor, 1000000); $findstart = "<!-- start -->"; $findend = "<!-- end -->"; $pozicestart = strpos($text, $findstart); $poziceend = strpos($text, $findend); $delka = $poziceend-$pozicestart; $texthledan = substr($text, $pozice, $delka); // tady si to nechce vzit tu promenou echo ("$texthledan"); Jak jinak by jste mi poradili prosim? |
||
Joker Profil |
#6 · Zasláno: 18. 10. 2011, 12:30:55 · Upravil/a: Joker
Kasta:
„ale to nejde“ Termín „nejde to“ není právě výstižný popis chyby, alespoň pro někoho kdo není jasnovidec. Pokud jde o kód, používá se tam (alespoň v ukázce) nedefinovaná proměnná $pozice. Asi to má být $pozicestart? Dále, proč se ze souboru čte zrovna 1000000 bajtů? Jestli je záměr přečíst celý soubor, daleko lepší je nastavit délku jako velikost souboru (zjistí se pomocí filesize), nebo rovnou použít funkci file_get_contents, která přesně tohle dělá. edit: Jo a ad echo ("$texthledan"); |
||
Kasta Profil * |
#7 · Zasláno: 18. 10. 2011, 13:59:55
Opravil jsem podle toho co je tu napsane a stale to cte soubor od $pozicestart az uplne do konce. Prosim jeste o nejakou radu jak na to aby to cetl pouze do $poziceend
Dekuji. |
||
Joker Profil |
#8 · Zasláno: 18. 10. 2011, 14:16:09
Kasta:
A jsou v $pozicestart a $poziceend správné hodnoty? Taky by nebylo od věci kontrolovat, jestli strpos vůbec něco našlo (tj. jestli výsledek není false; Zároveň pozor na to, že je třeba zabránit konverzi hodnoty 0 na false při porovnání, a tedy použít operátor ===). |
||
Časová prodleva: 3 dny
|
|||
lama987 Profil * |
#9 · Zasláno: 21. 10. 2011, 15:15:58
V té ukázce skriptu se hlavně nevytváří žádná hodnota pro proměnnou $pozice. Do proměnné $texthledan se tak vždy zapíše řetězec od pozice 0(počátku) s požadovanou délkou (tedy zpravidla něco úplně jiného, než se chce)
|
||
Časová prodleva: 13 let
|
0