Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!
2. staan de scripts op dezelfde server?
Pas de replâtrage, la structure est pourrie.
Verwijderd
zie php manual:
htmlspecialchars
(PHP 3, PHP 4 )
htmlspecialchars -- Converteert speciala karakters naar HTML entities
Omschrijving
string htmlspecialchars ( string string [, int quote_style])
Bepaalde karakters hebben een speciale betekenis in HTML, en moeten daarom weergegeven worden als HTML entities als die hun betekenissen moeten behouden. Deze functie geeft een string terug waarin sommige van deze conversies al gemaakt; de conversies die gemaakt worden zijn de conversies die het meest gangbaar zijn in het alledaags web programmeren. Als je wil dat alle HTML karakter entities geconverteerd worden moet hiervoor htmlentities() worden gebruikt.
Deze functie is nuttig om te voorkomen dat gebruiker-ingevoerde tekst HTML markup bevat, zoals in gastenboeken of andere applicaties. Het optionele tweede argument, quote_style, vertelt de functie wat te doen met enkele en dubbele quote karakters. De default mode, ENT_COMPAT, is de terugwaards compatibele mode die alleen de dubbele quotes vertaalt, en dus niet de enkele quotes. Als ENT_QUOTES is geactiveerd, zullen zowel enkele als dubbele quotes worden geconverteerd en als ENT_NOQUOTES is geactiveerd zal de functie beide enkele en dubbele quotes niet converteren.
De uitgevoerde conversies zijn:
'&' (ampersand) wordt '&'
'"' (dubbele quote) wordt '"' wanneer ENT_NOQUOTES niet geactiveerd is.
''' (enkele quote) wordt ''' alleen wanneer ENT_QUOTES geactiveerd is.
'<' (kleiner dan) wordt '<'
'>' (groter dan) wordt '>'
Voorbeeld 1. htmlspecialchars() example
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
Merk op dat deze functie alles wat hierboven niet weergegeven is ook niet converteert. Voor conversie van alle entities, zie htmlentities(). Let op dat het optionele tweede argument toegevoegd is in PHP 3.0.17 en PHP 4.0.3.
Het derde argument definieert welke karakter set moet worden gebruikt in de conversie. Standaard is dat ISO-8859-1. Dit derde argument was toegevoegd in PHP 4.1.0.
Zie ook htmlentities() en nl2br().
Bijvoorbeeld een stukje phpcode:Apollo_Futurae schreef op 20 september 2002 @ 17:13:
1. wil je nu de php code of de output van het script?
2. staan de scripts op dezelfde server?
1
2
3
4
5
| <?
function schrijf
{
echo"<html>\n<body>\nhallo\n</body>\n</html>\n";
} |
Nu wil ik graag:
1
2
3
4
5
| <html> <body> hallo </body> </html> |
in de string krijgen.
Ze staan op de zelfde server ja.
Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!
Verwijderd
misschien een oplossing om gewoon met een ander script die pagina op te halen als of je aan t browsen bent. De pagina wordt gewoon geparsed en je krijgt je htmloutput. En die output kun je dan weer in een string douwen.Brabrabra schreef op 20 september 2002 @ 17:48:
Ze staan op de zelfde server ja.
Lijkt logisch, maar hoe moet het, ik kan geen functie vinden die de html output leest...Verwijderd schreef op 20 september 2002 @ 17:59:
[...]
misschien een oplossing om gewoon met een ander script die pagina op te halen als of je aan t browsen bent. De pagina wordt gewoon geparsed en je krijgt je htmloutput. En die output kun je dan weer in een string douwen.
Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!
Verwijderd
de pagina's staan op dezelfde server zei je, dan moet je met fopen toch een heel kunnen komenBrabrabra schreef op 20 september 2002 @ 18:04:
[...]
Lijkt logisch, maar hoe moet het, ik kan geen functie vinden die de html output leest...
dat is ranzig
Verwijderd
$string = $string . functie();
of denk ik nou weer te simpel? of is dit geen optie?
Verwijderd
Dat heb ik al geprobeerd, maar de hoofdfunctie is een recursieve en dan wil het niet meer...Verwijderd schreef op 20 september 2002 @ 18:14:
Dan vervang je toch gewoon alle echo naar:
$string = $string . functie();
of denk ik nou weer te simpel? of is dit geen optie?
Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!
1
2
3
4
| ob_start(); //hier je php code $phpoutputineenstring = ob_get_contents(); ob_end_clean(); |
Zoiets?
Dat niet alleen, het gaat ook nog eens niet (soepel) werken:
1
2
3
| <?php eval('a<?php print "b"; ?>c'); //Error ?> |
Volgens mij is de beste manier om dit te doen gewoon om PHP als stand-alone binary te compilen en vervolgens de output met backticks op te vangen.
1
2
3
| <?php $output = `php /home/bla/file.php`; ?> |
This can no longer be ignored.
Ik blijf er iig vrij nuchter onder....
ik denk dat hij zoiets wil:Kresh schreef op 20 september 2002 @ 19:25:
PHP:
1 2 3 4 ob_start(); //hier je php code $phpoutputineenstring = ob_get_contents(); ob_end_clean();
Zoiets?
1
2
3
4
| ob_start(); include("Het bestand dat je bedoelt"); $phpoutputineenstring = ob_get_contents(); ob_end_clean(); |
of:
1
2
3
4
5
6
| function execpage($page) { $page = addslashes($page); // altijd voorzichtig zijn met eval... return eval("ob_start();include(\"$page\"); \$a = ob_get_contents();ob_end_clean(); return \$a;"); } $stringetje = execpage("mijnphp.php"); |
Neem dit niet zomaar over, want eval is altijd gevaarlijk en ranzig. Zorg dat je het begrijpt voordat je het gebruikt.
Localhost, sweet localhost
print $TEMPLATE->output();
doe je dan $var = $TEMPLATE->output();
Dit is het makkelijkste en je hebt meteen een mooie structuur van werken
Ja inderdaad, ik (ZE) bedoel het zo. Ik heb het geprobeerd en dit werkt perfect! Dankjewel allemaal!kvdveer schreef op 20 september 2002 @ 21:33:
[...]
ik denk dat hij zoiets wil:
PHP:
1 2 3 4 ob_start(); include("Het bestand dat je bedoelt"); $phpoutputineenstring = ob_get_contents(); ob_end_clean();
Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!
1
2
3
4
5
6
7
| <? // test.php // doe iets return $blaat; ?> <? $blaat = include('test.php'); ?> |
1
2
3
4
5
6
7
| ob_start(); include('./buildtree2.php'); $phpoutputineenstring = ob_get_contents(); ob_end_clean(); $myfile=fopen('../../linkstree.html','w'); fwrite($myfile,$phpoutputineenstring); fclose($myfile); |
Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!
Huh?ACM schreef op 21 september 2002 @ 12:35:
Je zou ook nog een return waarde aan je included script kunnen geven, dus iets ala:
PHP:
1 2 3 4 5 6 7 <? // test.php // doe iets return $blaat; ?> <? $blaat = include('test.php'); ?>
Aha, dus dan zo bijvoorbeeld:php.net:
return
[...]
If called from the global scope, then execution of the current script file is ended. If the current script file was include()ed or require()ed, then control is passed back to the calling file. Furthermore, if the current script file was include()ed, then the value given to return() will be returned as the value of the include() call. If return() is called from within the main script file, then script execution ends. If the current script file was named by the auto_prepend_file or auto_append_file configuration options in the configuration file, then that script file's execution is ended.
include.php:
1
2
3
4
5
6
7
| ob_start(); // // script // $phpoutputineenstring = ob_get_contents(); ob_end_clean(); return $phpoutputineenstring; |
main.php
1
| echo include('include.php'); |