überprüfung ob leerzeichen vor-& nach einem 'wort' steht

than

Mitglied
Guten Morgen.

Ich habe ein Smilie Script geschrieben.
Nun soll überprüft werden, ob vor- und nach dem Smilie Code (z.b. :biggrin:, :eek:, etc.) Leerzeichen vorhanden sind?
Wenn nämlich keine vorhanden sind, sollen welche gesetzt werden und wenn schon welche da sind, dann keine.

Wie stellt man so etwas an, wer hat eine Idee ?
 
Du kannst mit der Funktion substr() eine Stelle abschneiden. Das heisst du schneidest z.B. die ersten 2 Zeichen ab und schaust ob dies Leerzeichen sind.

Mit der Funktion sttrev() kehrst du den String um (um von hinten zu suchen),

Du könntest natürlich auch mit der Funktion trim() alle Leerzeichen am Anfang und Ende abschneiden und sie dann wieder hinzufügen, würde ich persönlich eleganter finden :)

Hoffe Dir ein wenig geholfen zu haben...
 
trim ist Schwachsinn in diesem Fall weil der Smiley in der Mitte des Strings
stehen könnte und dann von trim überhaupt nicht erfasst würde.

Mit regulären Ausdrücken könntest du die Existenz von Leerzeichen vor :) oder ;)
prüfen und danach an den MatchStellen ein Leerzeichen setzen (wenn keins da ist
natürlich nur)

Das müsste es bringen :

/(([^\s])([:;][)(/o0\\]))/
 
Stimmt, soviel habe ich nicht überlegt...Auch das mit dem wegschneiden ist auch nicht so praktisch ;) Naja, war wohl noch ein bisschen früh...
 
Ich sehe ausser regulären ausdrücken auch keine ander sinnvolle Möglichkeit das problem zu lösen... bei den Tutorials ist eine sehr ausführliche Beschreibung der Möglichkeiten von Regulären Ausdrücken :) (nur so als Tipp)

Normalerweise werden ja für die Bulletincodeersetzungen auch Reguläre ausdrücke verwendet also wirst du das denke ich leicht in deine Klasse/Funktion .. einbauen können :)

MfG Dominik
 
Nils Hitze hat gesagt.:
Das müsste es bringen :

/(([^\s])([:;][)(/o0\\]))/
Also wenn ich Deins einsetze dann kommt an Fehlermeldung:

Warning: Unknown modifier 'o' in C:\php5xampp-dev\htdocs\eintragen.php on line 380

Ich habe mir hier (wie vorgeschlagen wurde) http://www.tutorials.de/tutorials142738.html Reguläre Ausdrücke durchgelesen. Es ist zwar komplex, aber ich habe nicht gefunden was der Modifier 'o' machen soll.
Ich habe auch bei google gesucht.
 
Da ist nur ein Schreibfehler drin.. das soll kein Modifier sein:

/(([^\s])([:;][)(\o0\\]))/

ganz hintendran könnte noch ein Modifier dran kommen... bei sed unter unix muss z.b. ein g hintendran um mehrmalige vorkommen in einer zeile auch zu bearbeiten sonst bearbeitet er nur das erste Vorkommen/Zeile...

MfG Dominik ;)
 
Vielen Dank für den Hinweis. Kann es sein das dort immer noch ein Fehler drin ist?

Die Meldung lautet
Compilation failed: missing terminating ] for character class at offset 23 in C:\php5xampp-dev\htdocs\eintragen.php

Wenn ich aus "/(([^\s])([:;][)(\o0\\]))/" - "/(([^\s])([:;]\[)(\o0\\]))/" mache verschwindet die Fehlermeldung, aber keine Leerzeichen werden gesetzt.

Ich verstehe auch nicht was [:;] wirklich bedeutet- was es macht. Der ":" ist wohl vom Smilie Code :xxx: aber ";"? Wie wird da auf Leerzeichen voran und dahinter geprüft?
 
Zurück