Seite 1 von 1

String auffüllen / jedes Zeichen berücksichtigen

Verfasst: 17.08.2006 17:15
von easygo
Hi! Wer kennt eine php-Funktion, mit der sich ohne großen Aufwand "hinter jedes Zeichen"
in einer "Zeichenkette ohne Sonderzeichen" ein weiteres Zeichen einfügen lässt?

Perl-Suchmuster: m /w\(1)/

So genannte Grenzen hat die Zeichenkette leider keine.

Danke für jeden brauchbaren Hinweis. easy

Verfasst: 17.08.2006 17:26
von mad-manne
Hi ...
keine Ahnung, ob es da eine native Funktion für gibt :-?

Hab da mal eben was auf die Schnelle zusammengezimmert.

Code: Alles auswählen

<?php
$test = 'EIN TEST';
print addChar($test, '*');

function addChar($your_string, $add_char)
{
	$new_string = '';
	
	for ( $i = 0; $i < strlen($your_string); $i++ )
	{
		$new_string.= $your_string[$i] . $add_char;
		
	}// end FOR
	
	return $new_string;
}
?>
Hilft das ?

Gruss,
Manne.

Verfasst: 17.08.2006 17:46
von easygo
mad-manne hat geschrieben:keine Ahnung, ob es da eine native Funktion für gibt
Beruhigt mich irgendwie :wink: dachte schon, ich wär einfach zu blöd zum suchen..
mad-manne hat geschrieben:Hab da mal eben was auf die Schnelle zusammengezimmert.
Schnell und gut! Tut genau das, was es soll! Thanx :grin: easy

Verfasst: 17.08.2006 20:40
von Banger
Servus,
Manne, Deine Lösung ist leider IMHO unsauber und zudem falsch; siehe http://de.php.net/String unter "Zugriff und Modifikation von Zeichen in Strings":
Innerhalb von Zeichenketten (strings) kann durch die Angabe des nullbasierten Offsets in geschweiften Klammern nach dem String auf das gewünschte Zeichen zugegriffen oder dieses modifiziert werden.

Anmerkung: Für Abwärtskompatibilität können Sie für den selben Zweck immer noch die Array-Klammern verwenden. Diese Syntax wird jedoch seit PHP 4 missbilligt.
Also wenn schon, dann wären geschweifte Klammern angebracht, aber auch das halte ich für keine elegante Lösung - das ist allerdings nur meine Einstellung, die ich keinem aufdrängen will.

Bequemer geht's mit preg_replace() in einem Einzeiler, der zudem den Vorteil hat, dass nur Zeichen der Zeichenklasse \w mit einem Punkt versehen werden:

Code: Alles auswählen

<?php
$str = 'lalelufump';
echo preg_replace('/(\w)/', '\1.', $str);
?>
=> l.a.l.e.l.u.f.u.m.p.

Code: Alles auswählen

<?php
$str = 'lalelu lalalu lalala';
echo preg_replace('/(\w)/', '\1.', $str);
?>
=> l.a.l.e.l.u. l.a.l.a.l.u. l.a.l.a.l.a.