Inhalt von bbcode in Variable speichern

Hat ich auch schon probiert. Funktionieren tut es auch nicht. Ich häng die Datei mal an aber nicht böse sein wenn es nicht ganz so ordentlich ist. Zudem bin ich mir sicher das man einiges auch schöner machen kann , aber mit PHP arbeite ich noch nicht so lange
 
Zuletzt bearbeitet:
Ich hoffe das mir jetzt jemand helfen kann/möchte .

Ich hab es jetzt hinbekommen das das $ zeichen angezeigt wird.

So sieht das bis jetzt aus :
PHP:
<?php
function highlight_php( $str )
{
    ob_start();


$str = str_replace("<br />", "", $str);


    highlight_string($str);
	

    $code = ob_get_contents();
    
	$code = str_replace('\\', '', $code);
	
ob_end_clean();

    return $code;

}  

$frage_text = preg_replace("/\[php\](.*?)\[\/php\]/ise", "highlight_php('$1')", $frage_text);  
?>

Ich muss jedes \ darausnehmen, sonst würde vor jedem " ein \ stehen, aber so werden natülich auch die vom User eingetragenen \ entfernt. Zudem wird alles nach einem " rot dargestellt auch wenn ein " an anderer Stelle steht wird nach dem ersten " bis zum ende alles rot, sollte denk ich auch nicht sein. Zu sehen ist das
Hier

Ich hoffe das mir diesmal jemand hilft denn wie man am erstellungsdatum des Threads sieht besteht dieses Problem schon seit längerem.

mfG
 
Mehr als Fatal error: Call to undefined function strip_slashes() in /var/www/...

kommt nicht, ich hab ein paar Varianten versucht:

1.
PHP:
function highlight_php( $str )
{
 ob_start();

$str = str_replace("<br />", "", $str);


    highlight_string($str);
    

    $code = ob_get_contents();
    
    
ob_end_clean();

	$code = strip_slashes($code);	
    return $code; 


}

2
PHP:
function highlight_php( $str )
{
 ob_start();

$str = str_replace("<br />", "", $str);


    highlight_string($str);
    

    $code = ob_get_contents();
    
 
    
ob_end_clean();

	strip_slashes($code);	
    return $code; 


}

3
PHP:
function highlight_php( $str )
{
 ob_start();

$str = str_replace("<br />", "", $str);

    strip_slashes($str);

    highlight_string($str);
    


    $code = ob_get_contents();
    
  
    
ob_end_clean();

		
    return $code; 


}

Und noch ein paar andere Varianten, auch mal strip_slashes('$str'); oder strip_slashes("$str"); benutzt und so kommt aber immer der gleiche Fehler, um deine Frage zu beantworten, Nein ich bin anscheinend nicht in der Lage diese funktion zu benutzten, damit ich es aber demnächst kann , kannst du mir ja mal auf die Sprünge helfen ;)

php.net hab ich dazu auch schon besucht.
 
Hast du mal daran gedacht, dass die Fehlermeldung darauf hinweist, dass eine Funktion dieses Namens nicht existiert und damit auch eine Variation der Parameter unsinnig ist? Die gemeinte Funktion heißt nämlich stripslashes().
 
Das wusst ich jetzt nicht, wieder mal ein Stückchen schlauer ;)

Ich übersah es auch da als ich es bei php.net ins Suchfeld so eingegeben hatte ich trotzdem auf die richtige Seite kam mit der Funktion , das sie dort ohne unterstrich stand übersah ich.

Trotzdem funktioniert es nicht (siehe link ein paar Posts über diesem)

Jetzt stehen da wieder die Backslashes obwohl die ja eigentlich mit der funktion entfernt werden sollen.

Und so siehts aus auf der Seite

PHP:
<?php

echo (" Hallo \");
echo (\" $das \"); 
?>

Probiert hab ich es wieder mit verschiedenen Variationen nur eben ohne den unterstrich
 
Ich häng jetzt mal ein zip archiv an in der zwei Dateien sind, einmal die ausgabe (thread.php) und einmal die php datei in der die BBCode umgewandelt werden (code.php)

Ich verzweifel schon langsam, es geht nur um das Problem mit dem highlighten des Syntaxes und nicht darum das ich manche Sachen besser hätte lösen können etc.
 

Anhänge

Folgendes im Rumpf der highlight_php()-Funktion sollte funktionieren:
PHP:
ob_start();
highlight_string(stripslashes($str));
return ob_get_clean();
 
Super, jetzt geht es , ich musste noch html_entity_decode() mit einbauen und schon zeigt er es mir richtig an.

So, da es ja sein kann das jemand mal das gleiche Problem hat und es nicht wieder zu so einer Disskusion kommt , schreib ich noch kurz wie es funktioniert.


Das hier ist damit das entfernt wird und die Funktion aufgerufen wird:

PHP:
$text = preg_replace("/\[php\](.*?)\[\/php\]/ise", "highlight_php('$1')", $text);

Und das hier damit es richtig angezeigt wird:

PHP:
function highlight_php( $str )
{
 ob_start();

$str = str_replace("<br />", "", $str);

    

   highlight_string(html_entity_decode(stripslashes($str)));
    

 
    $code = ob_get_contents();
   

    
ob_end_clean();

	        
    return $code; 


}

Vielen dank an jeden der mir geholfen hat, nun ist mein großes Problem gelöst. :)
 
Zurück