Autor Zpráva
Kasta
Profil *
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 *
Kasta:
zjistit co je napsano nekde uprostred

Jde to.
Kasta
Profil *
A poradite mi nekdo jak? Prosim.
Joker
Profil
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 *
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
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");
Proměnné se nepíší do uvozovek.
Kasta
Profil *
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
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 ===).
lama987
Profil *
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)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0