Draganis: Text in grossschrift

Ich hatte den Text schonmal geschrieben nur wohl mit einem falschen Thema, deshalb hier nochmal ;o)

Hallo,

bei mir erfolgte folgendes Problem:
ich moechte in einer Zeichenkette alles was zwischen [g] und [/g] steht gross schreiben...
nun dachte ich mir dass dies mit preg_replace() am besten ginge, bin da wohl aber auf die schnauze gefallen, da ich keine Ahnung von regular expressions hab.
als ich bei php.net suchte fand ich auch gleich etwas was ich mit etwas bestehendem (BB-Code) kombinieren wollte...
Was ich fand:
preg_replace ("/(</?)(\w+)([^>]*>)/e",
              "'\1'.strtoupper('\2').'\3'",
              $html_body);
// Dies soll alle HTML Tags gross anzeigen

Was ich veraenderte:
  $message = preg_replace("/[i](.*?)[/i]/si", "<!-- BBCode Start --><I>\1</I><!-- BBCode End -->", $message);
//Dies mach alles zwischen [i] und [/i] italic

Heraus kam:
  $message = preg_replace("/[k](.*?)[/k]/e", "<!-- BBCode Start -->".strtolower('\1')."<!-- BBCode End -->", $message);

Nur da ergab sich folgende Fehlermeldung:
<b>Parse error</b>:  parse error in <b>C:\inetpub\wwwroot\vwf\comm\include\text.inc.php(188) : regexp code</b> on line <b>1</b><br>
<br>
<b>Fatal error</b>:  Failed evaluating code:
<!-- BBCode Start --> HALLLLOOOOO<!-- BBCode End -->
 in <b>C:\inetpub\wwwroot\vwf\comm\include\text.inc.php</b> on line <b>188</b><br>

Ich hoffe einer von euch kann mir weiterhelfen.
Entweder mit einem fertigen Code (samt erklaerung wenn moeglich)
Oder einfach mit einer Hilfestellung was RegEx angeht.

Danke im Voraus

Draganis

  1. Huhu Draganis

    ich moechte in einer Zeichenkette alles was zwischen [g] und [/g] steht gross schreiben...

    dann solltest Du strtoupper benutzen ;-)

    Heraus kam:
      $message = preg_replace("/[k](.*?)[/k]/e", "<!-- BBCode Start -->".strtolower('\1')."<!-- BBCode End -->", $message);

    Der Modifier /e bewirkt, dass der 2. Parameter des preg_replace-Statements als PHP-Code interpretiert wird.
    In Deinem Beispiel steht da:
    "<!-- BBCode Start -->".strtolower('\1')."<!-- BBCode End -->"

    Da gibt es dann natürlich sofort einen Parser-Error da "<!--" HTML-Syntax ist.

    Es müsste ungefähr so ausschauen:

    $message = preg_replace("/[k](.*?)[/k]/e", '"<!-- BBCode Start -->".strtolower("\1")."<!-- BBCode End -->"', $message);

    Viele Grüße

    lulu

    1. Ah jetz versteh ich das auch....
      Vielen Dank...
      sagmal, kennst du ne gute Seite, moeglichst in Deutsch, wo man REGEX lernen kann?

      Ciao

      Sven

  2. hi

    ich moechte in einer Zeichenkette alles was zwischen [g] und [/g] steht gross schreiben...

    sollen dass dann irgendwann großgeschriebene HTML-Tags werden? Das ist keine gute Idee! Zum einen komprimiert sich das schlechter, zum anderen werden in XHTML eh die kleinen zur Pflicht.

    Grüße aus Bleckede

    Kai