Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Krasses php Problem
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.481
Registriert seit: Feb 2011
Beitrag #1
Krasses php Problem
Hi,

Ich hoffe ihr könnt mir helfen den ich habe mal wieder ein neues php Problem.
Und zwar habe ich mittlererweile mittels

bbxxcode(htmlspecialchars($message));

geschafft das der bbcode umgewandelt wird, normales html in posts jedoch nicht.
Seit dem Funktioniert mein BBCode "code" jedoch nicht mehr so wie er soll, siehe angehängte Datei.

Hier der Source:

Code:
$output = preg_replace_callback('#\[code\](.*)\[/code\]#isU', create_function('$str', 'return "<table class=\"tableb\"><tr><td>Code:</td></tr></table><table class=\"tablea\"><tr><td>".highlight_string($str[1],TRUE)."</td></tr></table>";'), str_replace("\n", "", $output));


Ich hoffe es kann mir jemand dabei helfen den Code dem entsprechend hinzubiegen.

lg
Michael


Angehängte Datei(en) Thumbnail(s)
   

2018: Intel Xeon E5-1660v2, 128gb 1600MHZ DDR3 ECC RAM, 3x 1000gb SSD, 1x 4000gb HDD, Windows 7 Ultimate 64bit

Bald unfreiwilliger Windows 10 Nutzer.
Hofft auf positive Entwicklung im Amiga Bereich.
(Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2016 19:38 von Michael_.)
09.05.2016 19:36
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #2
RE: Krasses php Problem
(09.05.2016 19:36)Michael_ schrieb:  Hier der Source:

Code:
$output = preg_replace_callback('#\[code\](.*)\[/code\]#isU', create_function('$str', 'return "<table class=\"tableb\"><tr><td>Code:</td></tr></table><table class=\"tablea\"><tr><td>".highlight_string($str[1],TRUE)."</td></tr></table>";'), str_replace("\n", "", $output));
Du erwartest nicht ernsthaft, dass jemand dieses Chaos für dich wartet oder?
09.05.2016 19:39
Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.481
Registriert seit: Feb 2011
Beitrag #3
RE: Krasses php Problem
Doch ich hoffe mal schon.
Es handelt sich dabei doch nur um eine Zeile ?!?

Wer wissen will wie die ganze funktion ungefähr aussieht (mittlererweile etwas anders, aber grundsätzlich so): http://www.winhistory-forum.net/showthr...#pid487252

lg
Michael

2018: Intel Xeon E5-1660v2, 128gb 1600MHZ DDR3 ECC RAM, 3x 1000gb SSD, 1x 4000gb HDD, Windows 7 Ultimate 64bit

Bald unfreiwilliger Windows 10 Nutzer.
Hofft auf positive Entwicklung im Amiga Bereich.
(Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2016 19:43 von Michael_.)
09.05.2016 19:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #4
RE: Krasses php Problem
Bitte lerne mal, wie HTML5 und CSS3 funktionieren, der Tabellenfuckup da kann doch nicht ernstgemeint sein.

Des weiteren lerne mal, wie man PHP-Code übersichtlich schreibt, das da tut sich keiner an.
09.05.2016 19:45
Diese Nachricht in einer Antwort zitieren
DosAmp Offline
είσαι καλαμάρι τώρα

Beiträge: 11.945
Registriert seit: Jul 2008
Beitrag #5
RE: Krasses php Problem
highlight_string erwartet rohen PHP-Code als Eingabe, keinen durch htmlspecialchars vorgefilterten String, der zum Beispiel das einleitende PHP-Tag <? zu &lt;? verstümmelt.

htmlspecialchars_decode kann die Umformung von htmlspecialchars rückgängig machen.

ты ребенок сейчас
(Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2016 19:54 von DosAmp.)
09.05.2016 19:47
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.481
Registriert seit: Feb 2011
Beitrag #6
RE: Krasses php Problem
(09.05.2016 19:45)mrshadowtux schrieb:  Bitte lerne mal, wie HTML5 und CSS3 funktionieren, der Tabellenfuckup da kann doch nicht ernstgemeint sein.

Des weiteren lerne mal, wie man PHP-Code übersichtlich schreibt, das da tut sich keiner an.

Ich mache das mit absicht so.
Ich mag halt tabellen, ist doch okay? Du kannst ja Divs benutzen.

(09.05.2016 19:47)DosAmp schrieb:  highlight_string erwartet rohen PHP-Code als Eingabe, keinen durch htmlspecialchars vorgefilterten String, der zum Beispiel das einleitende PHP-Tag <? zu &lt;? verstümmelt.

Ja und wie kann ich das Problem beheben ohne auf htmlspecialchars zu verzichten?
kann ich das irgendwie für die funktion quasi deaktivieren? Ich brauche da echt mal hilfe ^^

lg
Michael

2018: Intel Xeon E5-1660v2, 128gb 1600MHZ DDR3 ECC RAM, 3x 1000gb SSD, 1x 4000gb HDD, Windows 7 Ultimate 64bit

Bald unfreiwilliger Windows 10 Nutzer.
Hofft auf positive Entwicklung im Amiga Bereich.
09.05.2016 19:55
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #7
RE: Krasses php Problem
Divs verwendet auch kein Mensch mehr. Heutzutage zeichnet man semantisch die Inhalte aus. Ein Blogbeitrag ist ein <article>, ein Seitenbereich eine <section>, deine Codebox da ein <code>, ein Header ein <header> usw. HTML zeichnet nur noch Inhalte aus und hält sich aus dem Design heraus.
09.05.2016 20:01
Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.481
Registriert seit: Feb 2011
Beitrag #8
RE: Krasses php Problem
da bin ich wohl etwas altmodisch

Code:
$output = preg_replace_callback('#\[code\](.*)\[/code\]#isU', create_function('$str', 'return "<table class=\"tableb\"><tr><td>Code:</td></tr></table><table class=\"tablea\"><tr><td>".htmlspecialchars_decode(highlight_string($str[1],TRUE))."</td></tr></table>";'), str_replace("\n", "", $output));

Problem halb gelöst, wie vermeide ich nun das die Smilies umgewandelt werden?
Und das highlighting funktioniert auch nicht leider.

Hier mal die komplette Funktion wie sie aktuell aussieht:

Code:
/* Posting --> Parser */
function bbxxcode($post)
{
$output=$post;
//BBCodes
$output=preg_replace("|\[b\](.*)\[/b\]|Uism","<b>$1</b>",$output);
$output=preg_replace("|\[u\](.*)\[/u\]|Uism","<span style=\"text-decoration:underline;\">$1</span>",$output);
$output=preg_replace("|\[i\](.*)\[/i\]|Uism","<span style=\"font-style:italic;\">$1</span>",$output);
$output=preg_replace("|\[url\](.*)\[/url\]|Uism","<a href=\"$1\" target=\"blank\">$1</a>",$output);
$output=preg_replace("|\[url=(.*)\](.*)\[/url\]|Uism","<a href=\"$1\" target=\"blank\">$2</a>",$output);
$output=preg_replace("|\[img\](.*)\[/img\]|Uism","<img src=\"$1\" border=\"0\">",$output);
$output=preg_replace("|\[quote=(.*)\](.*)\[/quote\]|Uism","<table class=\"tableb\"><tr><td>Original from <b>$1:</b></td></tr></table><table class=\"tablea\"><tr><td>$2</td></tr></table>",$output);
$output=preg_replace("|\[size=(.*)\](.*)\[/size\]|Uism","<span style=\"font-size:$1pt;\">$2</span>",$output);
$output=preg_replace("|\[color=(.*)\](.*)\[/color\]|Uism","<span style=\"color:$1;\">$2</span>",$output);
$output = preg_replace_callback('#\[code\](.*)\[/code\]#isU', create_function('$str', 'return "<table class=\"tableb\"><tr><td>Code:</td></tr></table><table class=\"tablea\"><tr><td>".htmlspecialchars_decode(highlight_string($str[1],TRUE))."</td></tr></table>";'), str_replace("\n", "", $output));

if($bbxxuserdata_username != "") $bbxxcode_username = $bbxxuserdata_username;
else $bbxxcode_username = "Guest";
$output=str_replace("{username}","$bbxxcode_username",$output);
//smilies
$output=str_replace(":)","<img src=\"images/smilies/smile.gif\" alt=\"smile\" />",$output);
$output=str_replace(":D","<img src=\"images/smilies/biggrin.gif\" alt=\"grins\" />",$output);
$output=str_replace(":(","<img src=\"images/smilies/sad.gif\" alt=\"sad\" />",$output);
$output=str_replace(";)","<img src=\"images/smilies/wink.gif\" alt=\"wink\" />",$output);
$output=str_replace(":rolleyes:","<img src=\"images/smilies/rolleyes.gif\" alt=\"rolleyes\" />",$output);
$output=str_replace(":P","<img src=\"images/smilies/tongue.gif\" alt=\"tongue\" />",$output);  
return $output;
}

lg
Michael [/i]


Angehängte Datei(en) Thumbnail(s)
   

2018: Intel Xeon E5-1660v2, 128gb 1600MHZ DDR3 ECC RAM, 3x 1000gb SSD, 1x 4000gb HDD, Windows 7 Ultimate 64bit

Bald unfreiwilliger Windows 10 Nutzer.
Hofft auf positive Entwicklung im Amiga Bereich.
(Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2016 20:05 von Michael_.)
09.05.2016 20:04
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
είσαι καλαμάρι τώρα

Beiträge: 11.945
Registriert seit: Jul 2008
Beitrag #9
RE: Krasses php Problem
Das htmlspecialchars_decode gehört um das Argument zu highlight_string, nicht um dessen Ausgabe, die bereits sauberes HTML ist.

ты ребенок сейчас
09.05.2016 20:07
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Michael_ Offline
Bier aus Hawaii

Beiträge: 1.481
Registriert seit: Feb 2011
Beitrag #10
RE: Krasses php Problem
Vielen dank, das klappt!

Hier die komplette Funktion, ich bin sicher die ist mal für den ein oder anderen ganz nützlich:

Code:
/* Posting --> Parser */
function bbxxcode($post)
{
$output=$post;
//BBCodes
$output=preg_replace("|\[b\](.*)\[/b\]|Uism","<b>$1</b>",$output);
$output=preg_replace("|\[u\](.*)\[/u\]|Uism","<span style=\"text-decoration:underline;\">$1</span>",$output);
$output=preg_replace("|\[i\](.*)\[/i\]|Uism","<span style=\"font-style:italic;\">$1</span>",$output);
$output=preg_replace("|\[url\](.*)\[/url\]|Uism","<a href=\"$1\" target=\"blank\">$1</a>",$output);
$output=preg_replace("|\[url=(.*)\](.*)\[/url\]|Uism","<a href=\"$1\" target=\"blank\">$2</a>",$output);
$output=preg_replace("|\[img\](.*)\[/img\]|Uism","<img src=\"$1\" border=\"0\">",$output);
$output=preg_replace("|\[quote=(.*)\](.*)\[/quote\]|Uism","<table class=\"tableb\"><tr><td>Original from <b>$1:</b></td></tr></table><table class=\"tablea\"><tr><td>$2</td></tr></table>",$output);
$output=preg_replace("|\[size=(.*)\](.*)\[/size\]|Uism","<span style=\"font-size:$1pt;\">$2</span>",$output);
$output=preg_replace("|\[color=(.*)\](.*)\[/color\]|Uism","<span style=\"color:$1;\">$2</span>",$output);
$output = preg_replace_callback('#\[code\](.*)\[/code\]#isU', create_function('$str', 'return "<table class=\"tableb\"><tr><td>Code:</td></tr></table><table class=\"tablea\"><tr><td>".highlight_string(htmlspecialchars_decode($str[1]),TRUE)."</td></tr></table>";'), str_replace("\n", "", $output));

if($bbxxuserdata_username != "") $bbxxcode_username = $bbxxuserdata_username;
else $bbxxcode_username = "Guest";
$output=str_replace("{username}","$bbxxcode_username",$output);
//smilies
$output=str_replace(":)","<img src=\"images/smilies/smile.gif\" alt=\"smile\" />",$output);
$output=str_replace(":D","<img src=\"images/smilies/biggrin.gif\" alt=\"grins\" />",$output);
$output=str_replace(":(","<img src=\"images/smilies/sad.gif\" alt=\"sad\" />",$output);
$output=str_replace(";)","<img src=\"images/smilies/wink.gif\" alt=\"wink\" />",$output);
$output=str_replace(":rolleyes:","<img src=\"images/smilies/rolleyes.gif\" alt=\"rolleyes\" />",$output);
$output=str_replace(":P","<img src=\"images/smilies/tongue.gif\" alt=\"tongue\" />",$output);  
return $output;
}


lg
Michael


Angehängte Datei(en) Thumbnail(s)
   

2018: Intel Xeon E5-1660v2, 128gb 1600MHZ DDR3 ECC RAM, 3x 1000gb SSD, 1x 4000gb HDD, Windows 7 Ultimate 64bit

Bald unfreiwilliger Windows 10 Nutzer.
Hofft auf positive Entwicklung im Amiga Bereich.
09.05.2016 20:13
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste