String: Leerzeichen vor Hashtag hinzufügen

bluemirko

Grünschnabel
Hallo Leute,

ich hoffe, ihr könnt mir auf die Schnelle helfen... Ich schreibe gerade an einem Portal, das auch Hashtags unterstützt. Nun stehe ich aber vor einem Rätsel. Manche User vergessen das Leerzeichen zwischen mehreren Leerzeichen. Das will ich nun per PHP nachträglich noch einfügen.

Beispiel:

PHP:
$string = "Das ist eine Nachricht#hashtag1#hashtag2#hashtag3";

// Wie verarbeite ich das?

$ergebnis = "Das ist eine Nachricht #hashtag1 #hashtag2 #hashtag3";

Ich nehme an, dass ich hier mit preg_replace() ansetzen muss? Mit dem Expressions kenne ich mich aber leider gar nicht aus - vielleicht könnte ihr mir da helfen?

Die Logik wäre im Grunde wie folgt:

Wenn kein Leerzeichen vor Raute (#) im String, dann setzte Leerzeichen vor Raute.

Vielen Dank für Eure Hilfe!
 
Evtl so?

PHP:
<?php
$string = "Das ist eine Nachricht#hashtag1#hashtag2#hashtag3";

echo preg_replace('/[^ ]#/', ' #', $string);

EDIT: Sorry, das ist wohl nicht ganz richtig, das letzte Zeichen des vorigen Wortes wird immer abgeschnitten. Ich experimentiere weiter. :)

EDIT2: Eine funktionierende aber nicht so elegante Version wäre diese:

PHP:
<?php
$string = "Das ist eine Nachricht#hashtag1#hashtag2#hashtag3";

echo implode(' #', explode('#', $string));
 
Zuletzt bearbeitet:
PHP:
<?php
$string = "Das ist eine Nachricht#hashtag1#hashtag2#hashtag3";

echo preg_replace('/[^ ]#/', ' #', $string);

EDIT: Sorry, das ist wohl nicht ganz richtig, das letzte Zeichen des vorigen Wortes wird immer abgeschnitten. Ich experimentiere weiter. :)

Wenn du jetzt noch eine Gruppe hinzufügst, ist alles geritzt ;-)

PHP:
<?php
	$str = "Das ist eine Nachricht#hashtag1#hashtag2#hashtag3";

	echo preg_replace('/([^ ])#/', '$1 #', $str);
?>

Edit:

Deine implode/explode Lösung fügt allerdings auch ein Leerzeichen ein, wenn bereits eins da ist. Äquivalent zu dem hier

PHP:
<?php
    echo str_replace('#', ' #', $str);
?>
 
Zuletzt bearbeitet:
Danke Leute, das hat mir sehr geholfen! :)

Wird Zeit, dass ich mich mal mit den Expressions auseinander setze... Kennt Ihr eine gute und leichte Anleitung dazu? Möglichst nicht php.net - da steig ich irgendwie nicht durch!
 

Neue Beiträge

Zurück