Autor | Zpráva | ||
---|---|---|---|
Dadadada Profil * |
#1 · Zasláno: 23. 8. 2012, 12:29:40
Zdravím, mám script na vytváření souboru a zapisováíní. Problém je, že nyní bych potřeboval aby se mido souboru zapisoval php script...
např nějak takto: <?php $text = " <?php $text = "abc"; echo"$text"; "; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); ?> |
||
Keeehi Profil |
<?php $text = '<?php $text = "abc"; echo"$text"; '; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); ?> |
||
Dadadada Profil * |
#3 · Zasláno: 23. 8. 2012, 12:43:58
Děkuji, tot funguje, ale když dám script který já potřebuji, tak právě syntax chyba...
<?php $text = ' <?php echo "<h1>".$_GET['nazev']."</h1>"; $nazev = "".$_GET['nazevdb'].""; $sql = MySQL_Query("SELECT * FROM $nazev"); while ($row = MySQL_Fetch_Array($sql)) { echo "".$row['text'].""; } ?> '; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); ?> |
||
panther Profil |
Dadadada:
apostrofy uvnitr toho stringu musis escapovat, tedy pridat pred ne zpetne lomitko. |
||
Joker Profil |
#5 · Zasláno: 23. 8. 2012, 13:08:06
Dadadada:
Na toto by bylo nejlepší použít NOWDOC syntaxi: <?php $text = <<<'EOD' <?php echo "<h1>".$_GET['nazev']."</h1>"; $nazev = "".$_GET['nazevdb'].""; $sql = MySQL_Query("SELECT * FROM $nazev"); while ($row = MySQL_Fetch_Array($sql)) { echo "".$row['text'].""; } ?> EOD; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); ?> Jen tedy shrnu, že NOWDOC se zapisuje takto: Tři menšítka, apostrof, identifikátor, apostof a odřádkování <<<'cokoliv'
Vše za tím se bere jako řetězec, až do řádku, který obsahuje pouze ten zvolený identifikátor a volitelně středník. Identifikátor musí být úplně na začátku řádku, nesmí před ním být ani mezera nebo jiné odsazení. Tzn.: <<<'cokoliv' všechno zde se bere jako řetězec až do ukončovacího řádku: cokoliv; |
||
Dadadada Profil * |
#6 · Zasláno: 23. 8. 2012, 14:25:03
děkuji, to byb ylo parádní řešení, ale vypisuje mi to chybu:
Parse error: syntax error, unexpected T_SL in /data/...... on line 25 |
||
Ugo Profil |
#7 · Zasláno: 23. 8. 2012, 15:02:01
upozornění - nowdoc je od PHP 5.3 a narozdíl od některých zdejších co mají možnost pracovat vždy s nejnovějšími verzemi, není tomu tak u všech a i tak stará verze jako 5.3 bývá stále problém :) , ovšem nevím, zda s tím souvisí vyhozená chyba
|
||
Joker Profil |
Dadadada:
„Parse error: syntax error“ znamená špatně napsaný skript. Chyba „unexpected T_SL“ (T_SL znamená „<<“) bude způsobená chybou v té NOWDOC syntaxi. Musí to být zapsané tak jak jsem napsal. Začátek: Tři menšítka, apostrof, identifikátor*, apostrof, konec řádku Konec: Začátek řádku, samotný identifikátor (tj. bez apostrofů), volitelně středník, konec řádku. Nesmí v těch sekvencích být nic navíc, ani mezera, tabulátor a podobně (čili zejména koncový identifikátor nesmí být odsazený). * Pojmenování identifikátoru má snad stejné konvence jako pojmenování třeba proměnných, takže písmena, čísla, podtržítko a nesmí začínat číslem. edit: ad Ugo, dobrá poznámka, jak teď píšu PHP učebnici, kde je všechno dané pro PHP 5.3, vůbec mě nenapadlo to zmínit. |
||
Dadadada Profil * |
#9 · Zasláno: 23. 8. 2012, 15:29:51
zkopíroval sem to přesně jak máte
¨<?php $text = <<<'EOD' <?php echo "<h1>".$_GET['nazev']."</h1>"; $nazev = "".$_GET['nazevdb'].""; $sql = MySQL_Query("SELECT * FROM $nazev"); while ($row = MySQL_Fetch_Array($sql)) { echo "".$row['text'].""; } ?> EOD; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); ?> a pořád to píše to samé |
||
Joker Profil |
#10 · Zasláno: 23. 8. 2012, 15:39:13
Dadadada:
Pak to asi opravdu bude starší verzí PHP. Jak správně poznamenal Ugo, funguje to v PHP 5.3 a novějších. Druhé řešení tedy je si ten kód zkopírovat někam vedle a pustit na něm dvakrát nahrazení: Nejdřív změnit \ na \\ a potom ' na \' .
Výsledný kód pak může být v apostrofech. |
||
Časová prodleva: 12 let
|
0