| 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: 14 let
|
|||
0