Text in grossschrift
Draganis
- php
0 lulu0 Draganis
0 Kai Lahmann
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
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
Ah jetz versteh ich das auch....
Vielen Dank...
sagmal, kennst du ne gute Seite, moeglichst in Deutsch, wo man REGEX lernen kann?
Ciao
Sven
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