Ankündigung

Einklappen
Keine Ankündigung bisher.

String Highlighten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kein Genie
    hat ein Thema erstellt String Highlighten.

    String Highlighten

    Moin..

    Ich habe eine kleine Funktion, um einen PHP String zu highlighten:

    PHP-Code:
    $bbcode preg_replace("~\[php\](.+?)\[/php\]~smi"'<div class="code">'.highlight_string('\\1'true).'</div>'$bbcode); 
    Die Tags werden richtig ersetzt und auch alles schön in den Div geschrieben, aber der String wird aus einem mir unerfindlichen Grund einfach nicht gehiglightet.

    Könnt ihr mir vielleich helfen?

    Danke

  • nikosch
    antwortet
    Also ich bekomme da keinen Angriffsvektor gebastelt.

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Zitat von Frank Beitrag anzeigen
    natürlich kann man auch mit preg_replace arbeiten! Man muss es nur richtig anwenden!

    PHP-Code:
    function php_bb($s)
    {
        
    $suche = array('!\[php\](.+)\[\/php\]!iUse');
        
    $ersetzung = array('"<div class=\"code\">".highlight_string("$1", true)."</div>"');
        
    $s preg_replace($suche$ersetzung$s); 
        
        return 
    $s;

    Und wenn das dann im BBCode steht kann jeder PHP Code ausführen oder wie?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Destruction Beitrag anzeigen
    Ersetze function... durch
    PHP-Code:
    create_function('$matches','return......'); 
    Da hättest du auch selbst drauf kommen können, wenn du das manual angeschaut hättest!
    Habe es auch so gemacht.
    Habe zu schnell gepostet.
    Sorry

    Einen Kommentar schreiben:


  • Frank
    antwortet
    natürlich kann man auch mit preg_replace arbeiten! Man muss es nur richtig anwenden!

    PHP-Code:
    function php_bb($s)
    {
        
    $suche = array('!\[php\](.+)\[\/php\]!iUse');
        
    $ersetzung = array('"<div class=\"code\">".highlight_string("$1", true)."</div>"');
        
    $s preg_replace($suche$ersetzung$s); 
        
        return 
    $s;

    Einen Kommentar schreiben:


  • Destruction
    antwortet
    Ersetze function... durch
    PHP-Code:
    create_function('$matches','return......'); 
    Da hättest du auch selbst drauf kommen können, wenn du das manual angeschaut hättest!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von draco88 Beitrag anzeigen
    Unter PHP 5.3 funktionierts so

    PHP-Code:
    $bbcode preg_replace_callback("~\[php\](.+?)\[/php\]~smi", function($matches) {
        return 
    '<div class="code">' highlight_string($matches[1], true) . '</div>';
    }, 
    $bbcode
    Habe mir es nochmal angeschaut.
    Jetzt verstehe ich das mit dem callback auch. Danke.
    Allerdings, bekomme ich bei deinem Lösungsansatz immer eine Fehlermeldung:

    Parse error: syntax error, unexpected T_FUNCTION in /var/www/web517/html/betapage/functions/functions.php on line 556

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Weil du exakt das selbe Problem hast. PHP führt ERST die Funktionen aus. Heißt highlight_string wird ERST ausgeführt mit dem Inhalt $1, dabei wird wohl $1 rauskommen. Heißt im Array steht dann
    [code]<div class="code">$1</div>[code]

    Und erst DANN wird preg_replace ausgeführt und zwar mit dem Array von oben.

    Aber les bitte nochmal die beiden Beiträge oben!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ok,

    habe jetzt mal meine Funktion überarbeitet:

    PHP-Code:
    function php_bb($s)
    {
        
    $suche = array('!\[php\](.+)\[\/php\]!iUse');
        
    $ersetzung = array('<div class="code">'.highlight_string('$1'true).'</div>');
        
    $s preg_replace($suche$ersetzung$s); 
        
        return 
    $s;

    Jetzt bekomme ich immer folgende Fehlermeldung:

    Parse error: syntax error, unexpected '<' in /var/www/web517/html/betapage/functions/functions.php(565) : regexp code on line 1

    Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt; &lt;?php echo \\\'kleiner test\\\'; ?&gt; &lt;/span&gt; &lt;/code&gt;&lt;/div&gt; in /var/www/web517/html/betapage/functions/functions.php on line 565

    Einen Kommentar schreiben:


  • draco88
    antwortet
    Unter PHP 5.3 funktionierts so

    PHP-Code:
    $bbcode preg_replace_callback("~\[php\](.+?)\[/php\]~smi", function($matches) {
        return 
    '<div class="code">' highlight_string($matches[1], true) . '</div>';
    }, 
    $bbcode

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Du kannst so in preg_replace auch keine Funktion aufrufen. Es würde ja ERST highlight_string() aufgerufen werden mit dem String "\\1" und die Rückgabe würde dann zwischen die <div> geschrieben werden. UND DANN würde preg_replace aufgerufen werden mit dem entsprechendem String.

    Was du suchst ist vlt. eher: PHP: preg_replace_callback - Manual

    Einen Kommentar schreiben:

Lädt...
X