Autor | Zpráva | ||
---|---|---|---|
Broli Profil |
#1 · Zasláno: 17. 2. 2006, 19:05:11 · Upravil/a: Broli
Potreboval bych poradit, jak efektivne odstranit netisknutelne znaky ze zacatku a koncu souboru, ktere nacitam do skriptu pomoci include ci require.
Pokud by se jednalo o retezec, tak lze pouzit trim, ale v priapade souboru? Otvirani, nacitanu, uprava a opetovne ulozeni souboru a pote jeho nacteni pomoci include mi prijde ponekud tezkopadnym resenim.... Neexistuje neco snazsiho? |
||
*Čvachta* Profil * |
#2 · Zasláno: 17. 2. 2006, 19:24:52
Nepochopil jsem pokud něco includuješ, že z toho chceš odstranit mezery.. je to přece script ne?
|
||
Broli Profil |
#3 · Zasláno: 17. 2. 2006, 20:42:57
pokud chci posilat xml hlavicku stranky, nesmi se pred deklaraci vyskytovat zadne (ani prazdne znaky). Soubory, ktere se includji (napr. config a dalsi) mohou mit na konci prazdny znak a v tom pripade se stranka nezobrazi... Vzhledem k jejich poctu si nemohu dovolit spolehat na to, ze budu tyto mezery vzdy rucne mazat, chci jeste nejakou fci, ktera je pripadne sama odstrani...
|
||
*Čvachta* Profil * |
#4 · Zasláno: 17. 2. 2006, 21:07:46
Hm, tak to asi budes muset nacist jako textat a orezat. Jinak to nevidim.
|
||
jozob Profil |
#5 · Zasláno: 17. 2. 2006, 21:15:46 · Upravil/a: jozob
Broli
Išlo by to riešiť asi takto: * Načítaš súbor do premennej * Odstrániš z neho prázdne znaky * Pošleš obsah premennej na výstup Ale pri poslednom bode by som sa trošku zastavil: ak sa v načítanom súbore vyskytujú skripty, potrebuješ, aby sa vykonali. Čiže v podstate potrebuješ nasimulovať priebeh funkcie include, ale s použitím obsahu uloženého v premennej. Na to použiješ funkciu eval, ktorá vykoná skript uložený v reťazci. Príklad: <?php Ešte dodám, že za posledným príkazom by nemal byť ukončovací znak ?>, pretože ukončuje sa v príkaze eval. Ďalej už pokračujeme rovnako ako v prípade uzatvoreného PHP kódu. |
||
jozob Profil |
#6 · Zasláno: 17. 2. 2006, 21:18:03
A dalo by sa to možno zapísať kratšie:
<?php eval("?> ".trim(file_get_contents(nazov_suboru))); |
||
mila Profil |
#7 · Zasláno: 17. 2. 2006, 21:39:33
Zkus ob_start(); To zařídí, že se výstup bude ukládat do zásobníku a nevypíše se. Pak je tam funkce, co to vyprázdí, tu si najdi, nevzpomínám si, ob_flush() to pošle prohlížeči.
|
||
*Čvachta* Profil * |
#8 · Zasláno: 17. 2. 2006, 21:43:53
Není lepší ohlídat si ty mezery ručně?
|
||
jozob Profil |
#9 · Zasláno: 17. 2. 2006, 21:45:06
mila
Ako to rieši situáciu? Riadený výstup nezabezpečí odstránenie "vajtspejsov", alebo snáď áno? |
||
jozob Profil |
#10 · Zasláno: 17. 2. 2006, 21:46:19
*Čvachta*
"Není lepší ohlídat si ty mezery ručně?" Citujem Broliho: " ... Vzhledem k jejich poctu si nemohu dovolit spolehat na to, ze budu tyto mezery vzdy rucne mazat ... " |
||
Broli Profil |
#11 · Zasláno: 17. 2. 2006, 21:54:22
jozob
dik, pres eval to jde ...aspon to tak zatim vypada :) |
||
jozob Profil |
#12 · Zasláno: 17. 2. 2006, 21:56:34
Broli
Len si dávaj pozor na to ukončovanie, cháp to tak, že v evale sa to ukončí a za evalom už je normálny HTML výstup, pokiaľ znovu neotvoríš PHP, ale to Ti už asi nemusím hovoriť. |
||
Broli Profil |
#13 · Zasláno: 17. 2. 2006, 23:18:12
jenze podle toho, jak se to chova, to znova otvirat nemusim...
mam toto:
...a funguje to v pohode |
||
mila Profil |
#14 · Zasláno: 18. 2. 2006, 00:12:25
Ako to rieši situáciu? Riadený výstup nezabezpečí odstránenie "vajtspejsov", alebo snáď áno?
Pokud jsem tě pochopil, tak nechceš aby před hlavičkou bylo něco vypsáno. Pokud to pochytáš a pak vyčistíš, tak tam nic nebude. Jelikož tam nesmí být vypsáno nic, tak tam asi ani nic nevypisuješ. Takže nevadí, že se zbavíš i neprázdných znaků. |
||
jozob Profil |
#15 · Zasláno: 18. 2. 2006, 07:30:25
mila
Tu nejde o problém s hlavičkami. Broli potrebuje odstrániť biele znaky pretože na stránku vkladá xml deklaráciu, ktorá ale musí byť na prvom riadku a nesmie byť pred ňou ani jeden znak. |
||
llook Profil |
#16 · Zasláno: 18. 2. 2006, 10:35:32
Já bych taky řekl, že je to podobné, jako problém s hlavičkami. Pokud ty skripty nemají mít vůbec žádný výstup, tak bych to taky vzal přes output-buffer, třeba takhle:
<?php ob_start(); // zapne bufferování výstupu require('config.php'); require('něco-jinýho.php'); ob_end_clean(); // ukončí bufferování a buffer zahodí ?> <<?php ?>?xml version="1.0"?> |
||
jozob Profil |
#17 · Zasláno: 18. 2. 2006, 10:45:38
llook
Jasné, prečo ma to nenapadlo skôr. mila Sorry, Tvoj príspevok som čítal rýchlo a prehliadol som hlavnú myšlienku. Broli Riešenie, ktoré uviedoli llook a mila je lepšie, ako moje. |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0