Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
preg_replace "schluckt" zuviel [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
preg_replace "schluckt" zuviel


 
messingfeld
14-05-2005, 15:43 
 
Tach erstmal!

Mein Problem
Ich will ein Wort ersetzen wenn es alleine steht, spezieller wenn vor und/oder hinter dem Wort keine Zeichen [a-zA-Z0-9] stehen.
Jedoch sollen "Sondernzeichen" ala [:,._-§%$] erlaubt sein.

Mein Versuch

<?
$text = "Ich bin in der Stadt";
echo $text."<br />";
$suche = "/[^a-zA-Z0-9]in[^a-zA-Z0-9]/U";
$ersatz = '<b>in</b>';
$text = preg_replace($suche, $ersatz, $text);
echo $text;
?>


Als Ergebnis erwartete ich:
Ich bin in der Stadt

Jedoch bekam ich:
Ich bininder Stadt

raus!
Es wird einfach immer ein Zeichen vor und nach dem "Ersatz-Wort" verschluckt. Egal ob Leerzeichen oder Buchstabe etc.

Erwartung
Ich würde mich freuen wenn ihr mir Tipps geben könntet, wie ich das Prob lösen kann.

cu messingfeld

 
Abraxax
14-05-2005, 15:48 
 
$suche = "/(.*)[^a-zA-Z0-9](in)[^a-zA-Z0-9](.*)/U";
$ersatz = '$1 <b>$2</b> $3';

 
Skaschy
14-05-2005, 15:48 
 
zulangsam

 
messingfeld
14-05-2005, 16:09 
 
Erstmal vielen Dank jedoch kommt immer noch nicht raus was ich erwarte.
Vielleicht habe ich mich auch ein wenig missverständlich ausgedrückt:

Beispiel

<?
$text = "Ich bin ?in der Stadt";
echo $text."<br />";
$suche = "/(.*)[^a-zA-Z0-9](in)[^a-zA-Z0-9](.*)/U";
$ersatz = '$1 <b>$2</b> $3';
$text = preg_replace($suche, $ersatz, $text);
echo $text;
?>


Erwartet:
Ich bin ?in der Stadt

Erhalten:
Ich bin in der Stadt

Schluckt schon wieder zuviel?

Für Tipps und Tricks bin ich weiterhin offen.

cu messingfeld

 
Abraxax
14-05-2005, 16:30 
 
so?
$suche = "/(.*)([^a-zA-Z0-9])(in)([^a-zA-Z0-9])(.*)/U";
$ersatz = '$1$2<b>$3</b>$4$5';


geht aber sicherlich noch einfacher ... *g*

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:47 Uhr.