[PHP] Geparsete code van php page

Pagina: 1
Acties:

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 20:22

Brabrabra

Chaoss ahv

Topicstarter
Ik wil graag de code van een php site in een string. Dit kan op zich met highlight_file( string filename, true) wel (volgens php.net, mij lukte het niet om em in een string te krijgen), maar dan krijg je de php code van de orginele file te zien. Ik wil graag de code zoals die is nadat de php code geparsed is. Hoe? :?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
1. wil je nu de php code of de output van het script?
2. staan de scripts op dezelfde server?

Pas de replâtrage, la structure est pourrie.


Verwijderd

je moet de html vertalen naar code dus '<' wordt '>'

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().

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 20:22

Brabrabra

Chaoss ahv

Topicstarter
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?
Bijvoorbeeld een stukje phpcode:
code:
1
2
3
4
5
<?
function schrijf
{
echo"<html>\n<body>\nhallo\n</body>\n</html>\n";
}

Nu wil ik graag:
code:
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

Brabrabra schreef op 20 september 2002 @ 17:48:
Ze staan op de zelfde server ja.
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
  • Registratie: Januari 2002
  • Laatst online: 20:22

Brabrabra

Chaoss ahv

Topicstarter
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.
Lijkt logisch, maar hoe moet het, ik kan geen functie vinden die de html output leest...

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Verwijderd

Gebruik Eval()

Verwijderd

Brabrabra schreef op 20 september 2002 @ 18:04:
[...]

Lijkt logisch, maar hoe moet het, ik kan geen functie vinden die de html output leest...
de pagina's staan op dezelfde server zei je, dan moet je met fopen toch een heel kunnen komen ;)
dat is ranzig :X

Verwijderd

Dan vervang je toch gewoon alle echo naar:
$string = $string . functie();

of denk ik nou weer te simpel? of is dit geen optie?

Verwijderd

Je wilt dus gewoon de output van de page weergeven? Hmm, voor zover lukt dat niet, of je kijkt in de Document Source van je browser :)

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 20:22

Brabrabra

Chaoss ahv

Topicstarter
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?
Dat heb ik al geprobeerd, maar de hoofdfunctie is een recursieve en dan wil het niet meer... :(

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


  • ET
  • Registratie: Mei 2000
  • Laatst online: 17-06 18:00

ET

Kun je je vraag niet iets duidelijker uitleggen, volgens mij snapt de helft je probleem niet. :?

  • Kresh
  • Registratie: Mei 2000
  • Laatst online: 02-03 09:27
PHP:
1
2
3
4
ob_start(); 
//hier je php code
$phpoutputineenstring = ob_get_contents(); 
ob_end_clean();

Zoiets?

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Dat niet alleen, het gaat ook nog eens niet (soepel) werken: :)
PHP:
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.
PHP:
1
2
3
<?php
$output = `php /home/bla/file.php`;
?>

This can no longer be ignored.


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Precies wat Kresh zegt, dat zoek je...

Ik blijf er iig vrij nuchter onder....


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

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?
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();


of:

PHP:
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");


edit:

Neem dit niet zomaar over, want eval is altijd gevaarlijk en ranzig. Zorg dat je het begrijpt voordat je het gebruikt.

Localhost, sweet localhost


  • _DeWie_
  • Registratie: November 2001
  • Laatst online: 10-04 16:23
Ga gewoon lekker temlates gebruiken in plaats van het gebruikelijke laatste stament :

print $TEMPLATE->output();

doe je dan $var = $TEMPLATE->output();

Dit is het makkelijkste en je hebt meteen een mooie structuur van werken

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 20:22

Brabrabra

Chaoss ahv

Topicstarter
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();
Ja inderdaad, ik (ZE) bedoel het zo. Ik heb het geprobeerd en dit werkt perfect! Dankjewel allemaal! :>

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

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');
?>

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 20:22

Brabrabra

Chaoss ahv

Topicstarter
Dit is mn uiteindelijke code:
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!


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
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');
?>
Huh?
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.
Aha, dus dan zo bijvoorbeeld:

include.php:
PHP:
1
2
3
4
5
6
7
ob_start();
//
// script
//
$phpoutputineenstring = ob_get_contents();
ob_end_clean();
return $phpoutputineenstring;

main.php
PHP:
1
echo include('include.php');
Pagina: 1