Webstatt.org - Community seit 2006 - 2012 (2024?)

highlight_string nutzt den veralteten <font>tag

Avatar user-180
24.01.2007 22:16

highlight_string gibt <font color="#00000"> aus. ich mag aber den font tag aus religiösen gründen nicht verwenden. kann ich das irgentwie auf <span style="color: #000"> umstellen? oder muss ich das meinen hoster machen lassen?

may the force be with you. but mostly with me.
Avatar user-162
24.01.2007 23:17

könntest dir auch eine eigene Funktion dafür schreiben...

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-180
25.01.2007 08:18

habe gerade was nettes gefunden, leider funkioniert es bei mir nicht richtig

may the force be with you. but mostly with me.
Avatar user-253
25.01.2007 13:04

Nicht schön oder schnell aber funktioniert:

du ersetzt einfach per str_replace <font color="#00000"> mit <span...

also etwa so:
ob_start();
highlight_string($data);
$output = ob_get_contents();
ob_end_flush();
$output = str_replace('<font color="#00000">','<span class="blubb">',$output);


Damit es etwas schöner ist, könntest du die Such- und Ersetzmuster in je einem Array speichern und der Funktion übergeben.

Viele Grüße,
Michael

user-303
25.01.2007 15:05

ich möchte an dieser stelle einmal auf den 2. parameter von highlight_string verweisen.
abgesehen davon ist das ob_end_flush() mit einem ob_end_clean() zu ersetzen, sollte man diese schreibweise vorziehen

Avatar user-182
25.01.2007 17:08

*hust* wbb ^^
<?
function codeformat($code, $mode) {
global $tpl, $phpversion, $style, $lang, $filename;

if ($mode == "php"zwinkern {
$phptags = 0;
$code = $this->stripSlashes($code);

if (!wbb_strpos($code, "<?"zwinkern && wbb_substr($code, 0, 2) != "<?"zwinkern {
$phptags = 1;
$code = "<?php ".wbb_trim($code)." ?>";
}
ob_start();
$oldlevel = error_reporting(0);
highlight_string($code);
error_reporting($oldlevel);
$buffer = ob_get_contents();
ob_end_clean();

$buffer = str_replace("<code>", "", $buffer);
$buffer = str_replace("</code>", "", $buffer);

if ($phptags == 1) {
if (version_compare($phpversion, "4.3.0"zwinkern == -1 || version_compare($phpversion, "5.0.5"zwinkern >= 0) $buffer = preg_replace("/([^\\2]*)(&lt;\?php&nbspzwinkern(.*)(&nbsp;.*\?&gtzwinkern([^\\4]*)/si", "\\1\\3\\5", $buffer);
else if (version_compare($phpversion, "5.0.0RC1"zwinkern == -1) $buffer = preg_replace("/([^\\2]*)(&lt;\?php )(.*)( .*\?&gtzwinkern([^\\4]*)/si", "\\1\\3\\5", $buffer);
else {
$buffer = preg_replace("/([^\\2]*)(&lt;\?php )(.*)(\?&gtzwinkern([^\\4]*)/si", "\\1\\3\\5", $buffer);
}
}

$buffer = preg_replace("/<font color=\"([^\"]*)\">/i", "<span style=\"color: \\1\">", str_replace("</font>", "</span>", $buffer));
if ($phptags == 1 && version_compare($phpversion, "4.3.0"zwinkern != -1) $buffer = str_replace("<font</span>", "", $buffer);
$buffer = preg_replace("/<span style=\"([^\"]*)\">/i", "<span style='\\1'>", $buffer);
$buffer = str_replace("\"", "&quot;", $buffer);
$buffer = str_replace("{", "{", $buffer);
$buffer = str_replace("}", "}", $buffer);
$buffer = str_replace("\n", "", $buffer);
$buffer = str_replace("<br />", "\n", $buffer);

$linecount = wbb_substr_count($buffer, "\n"zwinkern + 1;
$height = ($style['smallfontsize'] + 3) * $linecount + 50;

if ($this->linenumbers == 1) $linenumbers = $this->makeLineNumbers($buffer);
else $linenumbers = '';

eval("\$code = \"".$tpl->get("codephptag"zwinkern."\";"zwinkern;
}
else {
$code = $this->stripSlashes($code);
$code = htmlconverter($code);
//$code = str_replace(" ", "&nbsp;", $code);
//$code = nl2br($code);

$code = str_replace("{", "{", $code);
$code = str_replace("}", "}", $code);

$linecount = wbb_substr_count($code, "\n"zwinkern + 1;
$height = ($style['smallfontsize'] + 3) * $linecount + 50;

if ($this->linenumbers == 1) $linenumbers = $this->makeLineNumbers($code);
else $linenumbers = '';

eval("\$code = \"".$tpl->get("codetag"zwinkern."\";"zwinkern;
}

return $code;
}
?>


kannst zwar net so 1:1 benutzen, aber steht schonmal ne menge drin, die man benutzen kann... die globalen variablen sind selbsterklärend denke ich lächeln

Seid ihr auch schon wix'r? xD
Avatar user-180
25.01.2007 17:55

danke Fettes Grinsen

may the force be with you. but mostly with me.
Avatar user-300
27.01.2007 15:40

Fish: user-129utzt du denn noch kein PHP5? zwinkern

Avatar user-180
27.01.2007 16:03

ich weiss nicht, ich glaube aber nicht. oder?

may the force be with you. but mostly with me.
Avatar user-300
27.01.2007 16:07

Original von user-180
ich weiss nicht, ich glaube aber nicht. oder?


Hm. Kann ich dir auch nicht sagen, steht ja nirgends... :baby:

user-254
28.01.2007 11:06

Original von user-303
ich möchte an dieser stelle einmal auf den 2. parameter von highlight_string verweisen.
abgesehen davon ist das ob_end_flush() mit einem ob_end_clean() zu ersetzen, sollte man diese schreibweise vorziehen


Mit dem zweiten Parameter hast du vollkommen Recht.
Wenn ob_get_contents richtig funktioniert, sollte es keinen Unterschied machen ob in diesem ob_end_clean,ob_end_flush oder gar nichts verwendet wird.

Nur um es noch einmal klarzustellen, die Variante mit dem zweiten Parameter von highlight_string ist in jedem Fall vorzuziehen aber die Funktionsweise des anderen nur angedeutet.

// edit

Da steht doch ganz oben ganz fett PHP Version 4.4.4
Intuitiv würde ich sagen, user-180 hat kein PHP5

// edit2

Folgt daraus, dass du auch kein auf PHP5 basierendes OOP Tutorial benötigst?

Avatar user-300
28.01.2007 11:13

Original von user-251el_Genf
Da steht doch ganz oben ganz fett PHP Version 4.4.4
Intuitiv würde ich sagen, user-180 hat kein PHP5


Also mein Beitrag war von Ironie getränkt, natürlich ist PHP 4.4.4 kein PHP5. lächeln
Meine Frage war eher daraus ausgelegt, dass PHP5 bereits von Haus aus kein <font ...> sondern <span style="color: ..."> benutzt.

Avatar user-180
28.01.2007 11:28

Original von user-251el_Genf
Folgt daraus, dass du auch kein auf PHP5 basierendes OOP Tutorial benötigst?


naja ... am besten zweigleisig lächeln also 444 und 5^^

abgesehen davon bin ich wohl zu blöde zu verstehen was du mit dem "zweiten parameier" gemeint ist. kann mir das mal jemand erklären?
highlight_string($text, ZWEITER_PARAMETER)
oder wie?

may the force be with you. but mostly with me.
Avatar user-182
28.01.2007 12:05

<?
highlight_string('<?php phpinfo(); ?>'zwinkern;
// oder
echo highlight_string('<?php phpinfo(); ?>', true);
?>


du verstehen mich? zwinkern

Seid ihr auch schon wix'r? xD
Avatar user-180
28.01.2007 13:02

ich verstehs nicht. was macht da jetzt en unterscheid in der ausgabe?

may the force be with you. but mostly with me.
Avatar user-271
28.01.2007 13:23

ich wüsste nicht wo der 2 Parameter herkommen soll....
in der englischen doku steht er nicht und in der Deutschen erst reht net???

also, wenn du bei der deutschen ein bisschen runterscrollst und die Comments dazu anschaust, dann stößt du auf das:
<?php

/*

These classes are used for highlighting, happy css-ing:

.phpdefault { color:#0000BB; font-weight: bold;}
.phpkeyword { color:#007700; font-weight: bold;}
.phpstring { color:#DD0000; font-weight: normal;}
.phpcomment { color:#FF8000; font-weight: normal;}

*/

/**
* Highlights PHP-source snippets with and without php-tags, inserts class definitions on request
*
* Strips <code> and <span color:black>, removes empty spans
*
* @param string $source Source to highlight
* @param boolean $classes, true links source elements to classes
* @return string
*/
function php_highlight($source, $classes = false)
{
if (version_compare( phpversion(), "5.0.0", "<"zwinkern) return "PHP 5 required";

$r1 = $r2 = '##';

// adds required PHP tags (at least with vers. 5.0.5 this is required)
if ( strpos($source,' ?>'zwinkern === false ) // xml is not THAT important zwinkern
{
$source = "<?php ".$source." ?>";
$r1 = '#&lt;\?.*?(php)?.*?&nbsp;#s';
$r2 = '#\?&gt;#s';
}
elseif (strpos($source,'<? 'zwinkern !== false)
{
$r1 = '--';
$source = str_replace('<? ','<?php ',$source);
}

$source = highlight_string($source,true);

if ($r1 =='--'zwinkern $source = preg_replace('#(&lt;\?.*?)(php)?(.*?&nbspzwinkern#s','\\1\\3',$source);

$source = preg_replace (array ( '/.*<code>\s*<span style="color: #000000">/', //
'#</span>\s*</code>#', // <code><span black>
$r1, $r2, // php tags
'/<span[^>]*><\/span>/' // empty spans
),'',$source);

if ($classes) $source = str_replace( array('style="color: #0000BB"','style="color: #007700"',
'style="color: #DD0000"','style="color: #FF8000"'zwinkern,
array('class="phpdefault"','class="phpkeyword"',
'class="phpstring"','class="phpcomment"',),$source);

return $source;
}

echo '<p>Some tests:</p><p>';
echo php_highlight('<?php $test = new func("Text"zwinkern; /* regular tags, use classes */ ?>',true),'<br />';
echo 'Inline code: ',php_highlight('<? $test = new func("Text"zwinkern; /* short tags */ ?>'zwinkern,
' works without or ',php_highlight('define (\'WITH_CLASSES\',\' too\'zwinkern; /* no tags */',true),'<br />';
echo php_highlight('$test = new func("Text"zwinkern; /* no tags, no classes */'zwinkern,'<br />';
echo '</p><p>You are running PHP: '.phpversion().'</p>';

?>

das ist glaube ich recht hilfreich zwinkern

edit: jetzt hab ich es verstanden:
im prinzip macht der 2 Parameter nur, dass er was zurückgibt...anders gibt highlight_string einfach aus, wenn du aber den 2 Parameter auf true setzt, dann gibt er es als string zurück und du musst nicht mit ob_end_clean und so rumhantieren
und ja er ist dokumentiert...hat wohl der deutsche übersetzer geschlafen zwinkern

#!/bin/bash
traurig){ neutral:& };:
Avatar user-300
28.01.2007 13:29

Original von user-271
ich wüsste nicht wo der 2 Parameter herkommen soll....
in der englischen doku steht er nicht und in der Deutschen erst reht net???


Und ob das steht zwinkern

mixed highlight_string ( string str [, bool return] )

The highlight_string() function outputs a syntax highlighted version of str using the colors defined in the built-in syntax highlighter for PHP.

If the second parameter return is set to TRUE then highlight_string() will return the highlighted code as a string instead of printing it out. If the second parameter is not set to TRUE then highlight_string() will return TRUE on success, FALSE on failure.

Avatar user-180
28.01.2007 15:51

Original von user-271
das ist glaube ich recht hilfreich zwinkern


PHP5 required traurig

function hilighte_den_php_code($text) {
highlight_string($text, TRUE);
$text = str_replace('<font color="','<span style="color:',$text'zwinkern;
$text = str_replace('">',';">',$text'zwinkern;
$text = str_replace('</font>',</span>',$text'zwinkern;
return $text;
}


dann müsste das ja so gehhen. warum gehts nicht? arggh

may the force be with you. but mostly with me.
Avatar user-118
28.01.2007 15:54

function hilighte_den_php_code($text) {
highlight_string($text, TRUE);
$text = str_replace('<font color="','<span style="color:',$text);
$text = str_replace('">',';">',$text);
$text = str_replace('</font>','</span>',$text);
return $text;
}


sieht man doch schon daran wie der Code eingefärbt wird... ein ' zu viel

mfg Alex

edit:// waren doch ein paar mehr ;D

Ich brauche keine Signatur
Avatar user-300
28.01.2007 15:56

function hilighte_den_php_code($text) {
$text = highlight_string($text, TRUE); // <--------
$text = str_replace('<font color="', '<span style="color:', $text);
$text = str_replace('">', ';">', $text);
$text = str_replace('</font>', '</span>', $text);
return $text;
}

user-343
28.01.2007 15:57

highlight_string() gibt was zurück...

function hilighte_den_php_code($text) {
$text = highlight_string($text, TRUE);
$text = str_replace('<font color="','<span style="color:',$text);
$text = str_replace('">',';">',$text);
$text = str_replace('</font>','</span>',$text);
return $text;
}


Edit: Mist... da war wer schneller *g*

Avatar user-180
28.01.2007 17:41

danke das funktioniert jetzt. super!

ich habe jetzt noch eine frage: ist es möglich, wenn in dem php-code eine funktion vorkommt, also zum beispiel highlight_string, dass dann automatisch ein link zur entsprechenden manualseite gesetzt wird? müsste ich da alle funktionsnamen mit hand eintragen oder geht das vll irgentwei anders?

may the force be with you. but mostly with me.
user-137
28.01.2007 17:50

Wenn es in dieser Klasse möglich ist mit CSS-Eigenschaften den Text zu formatieren:

http://labs.fah-q.org/lib/php/class.php-highlight.php

Und in der CSS Datei folgendes steht:

.php .function {
font-weight: bolder;
color: #a3a;
}


Dan wir das gehen. zwinkern

Sieh dir mal die Zeilen ab 119 an.

Avatar user-180
28.01.2007 18:12

schöne klasse. wie benutz ich die? // muss ich die benutzen oder geht das auch anders?

may the force be with you. but mostly with me.
user-137
28.01.2007 18:14

Das Versuch ich auch schon seit ein paar Tagen herauszufinden. Aber irgendwie will die bei mir nicht.

Avatar user-182
28.01.2007 19:07

mensch: http://www.kosmokrator.com/download/php/show_source_.php --> ist mit linkumwandlung und so zwinkern

übrigens, schöne klasse für anti alising linien für bilder in php:
http://www.kosmokrator.com/download/php/antialias.php

Seid ihr auch schon wix'r? xD
Avatar user-180
28.01.2007 19:31

danke! ich nehme mal an die linien haben nix mit dem thema zu tu oder ;-P

so für das archiv oder so.. das ist bei mir jetzt rausgekommen:

function SyntaxHighlight($text) {
$code = highlight_string( $text, true );
$code = str_replace('<font color="#FF9900">', '<span class="comment">', $code);
$code = str_replace('<font color="#0000CC">', '<span class="default">', $code);
$code = str_replace('<font color="#000000">', '<span class="html">', $code);
$code = str_replace('<font color="#006600">', '<span class="keyword">', $code);
$code = str_replace('<font color="#CC0000">', '<span class="string">', $code);
$code = str_replace('</font>', '</span>', $code);

$code = preg_replace( '{([\w]+)(\s*</span><span\s+class="keyword">|)(\s*\()}',
'<a target="_new" class="keyword_link" title="PHP Handbuch zu $1 öffnen" href="http://www.php.net/$1">$1</a>$2$3', $code );
$arrHTML = explode( "<br />", $code );
$count = count( $arrHTML );

// prepare html...
$html .= "<br />\n";
$html .= "<table>\n<tr>\n";
$html .= "<td>";

// line numbers...
for( $i = 1; $i <= $count; $i++ ) {
$html .= $i."<br />";
}
$html .= "</td>\n<td>\n";

// code lines...
foreach( $arrHTML as $line ) {
$html .= $line."<br />\n";
}

$html .= "</td>\n</tr>\n</table>\n";

return $html;
}

may the force be with you. but mostly with me.
user-137
29.01.2007 13:24

Mal eine veränderte Version von mir die dan fast genau so aussieht wie im WBB.

<?php

function SyntaxHighlight($text) {

$zeilenhoehe = "16"; // Die Höhe einer Zeile in px

$code = highlight_string( $text, true );
$code = str_replace('<font color="#FF9900">', '<span class="comment">', $code);
$code = str_replace('<font color="#0000CC">', '<span class="default">', $code);
$code = str_replace('<font color="#000000">', '<span class="html">', $code);
$code = str_replace('<font color="#006600">', '<span class="keyword">', $code);
$code = str_replace('<font color="#CC0000">', '<span class="string">', $code);
$code = str_replace('</font>', '</span>', $code);

$code = preg_replace( '{([\w]+)(\s*</span><span\s+class="keyword">|)(\s*\()}',
'<a target="_new" class="keyword_link" title=\'PHP Handbuch zu "$1" öffnen\' href="http://www.php.net/$1">$1</a>$2$3', $code );
$arrHTML = explode( "<br />", $code );
$count = count( $arrHTML );
$zeilen = $count*$zeilenhoehe-$zeilenhoehe*$count/5;

// prepare html...
$html .= "<br />\n";
$html .= "<div class=\"php_code_div\" style=\"height: ".$zeilen."px\">";
$html .= "<table class=\"php_code\" cellpadding=\"0\" cellspacing=\"0\">\n<tr>\n";
$html .= "<td nowrap=\"nowrap\" colspan=\"2\" class=\"php_code_title\">php:</td></tr><tr>";
$html .= "<td nowrap=\"nowrap\" class=\"php_code_number\">";

// line numbers...
for( $i = 1; $i <= $count; $i++ ) {
$html .= $i.':</br>';
}
$html .= "</td>\n<td nowrap=\"nowrap\" class=\"php_code_code\">\n";

// code lines...
foreach( $arrHTML as $line ) {
$html .= $line."<br />\n";
}

$html .= "</td>\n</tr>\n</table></div>\n";

return $html;
}
?>
<style type="text/css">
<!--
.php_code {
width: 100%;
}

.php_code_div {
overflow: auto;
width: 100%;
}

.php_code_title {
height: 20px;
background-color: #DBDBDB;
color: #6a6a6a;
margin: 0 auto;
font-size: 10px;
font-family: Verdana;
padding-left: 5px;
}

.php_code_number {
padding: 7px;
width: auto;
border: 1px solid #DBDBDB;
color: #6a6a6a;
text-align: right;
margin: 0 auto;
font-size: 11px;
font-family: Arial;
}

.php_code_code {
padding: 7px;
width: 98%;
border: 1px solid;
color: #DBDBDB;
margin: 0 auto;
font-size: 11px;
font-family: Arial;
}
-->
</style>


Mfg. BNS

Avatar user-300
03.02.2007 21:40

Hier auch ein kleines Skriptchen von mir welches auf den Token Funktionen von PHP aufbaut. Mit Befehlsverlinkung.
Noch etwas aufräumen und dann sollte das Ding auch mal auf meiner Seite veröffentlich werden zwinkern

Kritik gerne.


<?php 


// =============================================================================
// GIBT DEN UEBERGEBENEN PHP CODE FARBLICH ANGEPASST ZURUECK
// =============================================================================

function my_highlight_string($code)
{



// ==============================================================================
// ERGAENZENDE FUNKTIONEN
// ==============================================================================


// ------------------------------------------------------------------------------
// GIBT DIE *SELBER* DEFINIERTEN FUNKTIONEN ZURUECK
// ------------------------------------------------------------------------------

if (!function_exists('my_get_defined_functions'zwinkern) {
function my_get_defined_functions()
{
$funktionen = get_defined_functions();
return $funktionen['user'];
}
}


// ------------------------------------------------------------------------------
// SUCHT DEN PASSENDEN SCHLUESSEL ZUM TOKEN UND GIBT IHN ZURUECK
// ------------------------------------------------------------------------------

if (!function_exists('get_array_key'zwinkern) {
function get_array_key($id, $a_konstanten)
{
foreach ($a_konstanten as $key => $wert) {
if (in_array($id, $wert)) {
return $key;
}
}
return false;
}
}




// ==============================================================================
// VORBEREITUNG
// ==============================================================================

// Farben definieren
$a_farben = array( // STANDARDFARBEN
'string' => ini_get('highlight.string'zwinkern, // #DD0000 rot
'comment' => ini_get('highlight.comment'zwinkern, // #FF8000 orange
'keyword' => ini_get('highlight.keyword'zwinkern, // #007700 gruen
'default' => ini_get('highlight.default'zwinkern, // #0000BB blau
'html' => ini_get('highlight.html'zwinkern // #000000 schwarz
);

// Token Konstanten in Gruppen fuer Farbbestimmung einteilen
$a_konstanten = array(
'string' => array(T_CONSTANT_ENCAPSED_STRING, T_ENCAPSED_AND_WHITESPACE),
'comment' => array(T_COMMENT, T_DOC_COMMENT),
'default' => array(T_CLOSE_TAG, T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, T_VARIABLE, T_STRING, T_LNUMBER, T_WHITESPACE, T_CLASS_C),
'keyword' => array(T_ABSTRACT, T_ARRAY, T_ARRAY_CAST, T_AS, T_BOOLEAN_AND, T_BOOLEAN_OR, T_BOOL_CAST, T_BREAK, T_CASE, T_CATCH, T_CLASS, T_CLONE, T_CONCAT_EQUAL, T_CONTINUE, T_DEFAULT, T_DOUBLE_ARROW, T_DOUBLE_CAST, T_ECHO, T_ELSE, T_ELSEIF, T_EMPTY, T_ENDDECLARE, T_ENDFOR, T_ENDFOREACH, T_ENDIF, T_ENDSWITCH, T_ENDWHILE, T_END_HEREDOC, T_EXIT, T_EXTENDS, T_FINAL, T_FOREACH, T_FUNCTION, T_GLOBAL, T_IF, T_INC, T_INCLUDE, T_INCLUDE_ONCE, T_INSTANCEOF, T_INT_CAST, T_ISSET, T_IS_EQUAL, T_IS_IDENTICAL, T_IS_NOT_IDENTICAL, T_IS_SMALLER_OR_EQUAL, T_NEW, T_OBJECT_CAST, T_OBJECT_OPERATOR, T_PAAMAYIM_NEKUDOTAYIM, T_PRIVATE, T_PROTECTED, T_PUBLIC, T_REQUIRE, T_REQUIRE_ONCE, T_RETURN, T_SL, T_SL_EQUAL, T_SR, T_SR_EQUAL, T_START_HEREDOC, T_STATIC, T_STRING_CAST, T_THROW, T_TRY, T_UNSET_CAST, T_VAR, T_WHILE, T_LOGICAL_OR, T_UNSET, T_LIST, T_LOGICAL_AND, T_IS_NOT_EQUAL, T_IS_GREATER_OR_EQUAL, T_FOR, T_MUL_EQUAL, T_DIV_EQUAL, T_SWITCH, T_PLUS_EQUAL, T_DO),
'html' => array(T_INLINE_HTML)
);

// Formatierung von Farbangaben und Links
$format_highlighting = '<span style="color:%s;">%s</span>';
$format_link = '<a href="http://php.net/function.%s" class="php" title="%s()">%s</a>';




// ==============================================================================
// SCRIPT
// ==============================================================================


$php = '';
$i = 0;

$a_token = token_get_all($code);

foreach($a_token as $token)
{
if (is_string($token)) {
// 1 Buchstaben Token z.B. ( { [ ; usw.
$php .= sprintf($format_highlighting, $a_farben['keyword'], htmlspecialchars($token));

} else {
// Token Inhalt aufteilen
list($id, $text) = $token;

// Formatierung beibehalten
$text = htmlspecialchars($text);
$text = str_replace(' ', ' &nbsp;', $text);

// entsprechenden Schluessel fuer Farbauswahl auslesen
$key = get_array_key($id, $a_konstanten);

if ($id == T_STRING && ($a_token[$i + 1] == '(' || $a_token[$i + 2] == '('zwinkern && function_exists($text) && !in_array($text, my_get_defined_functions())) {
// Manual Link
$php .= sprintf($format_link, $text, $text, $text);
} else {
// normale Ausgabe
$php .= sprintf($format_highlighting, $a_farben[$key], $text);
}
}

// Zaehler fuer Manual Verlinkung
$i++;
}

return str_replace("\n", '<br />', $php);
}

?>