Tag: string

PHP: String nach Wortende kürzen

Das Problem hatte vielleicht schon manch einer. Hier eine Lösung:

function getShortTextByWord($string, $len)
{
$string = substr($string, 0, $len);
$string_end = strrpos($string, ' ');
if($string_end) $string = substr($string, 0, $string_end);
return $string;
}


PHP, RegExp: Match exact string with preg_replace

Kurz um, um einen exakten String zu ersetzten, muss man preg_replace mit dem “\b” – Parameter (word boundary) benutzen:

$new_string = preg_replace('/\b'.$exact_string.'\b/', $replace_with);

Ich kannte es sonst nur so:

$new_string = preg_replace('^'.$exact_string.'$', $replace_with);

Das warf bei mir aber immer den Fehler:

Warning: preg_replace() [function.preg-replace]: No ending delimiter '^' found in /home/....php on line ...

Einige werden sagen, warum macht er das denn nicht mit dem viel performanteren str_replace?
Ich nehme preg_replace, weil ich in dem übergebenen String den zu ersetzenden Teilstring nur einmal ersetzen will.
Als dritten Parameter kann man angeben wie oft der Teilstring ersetzt werden soll.

$new_string = preg_replace('/\b'.$exact_string.'\b/', $replace_with,1);

Wenn es case insensitive sein soll einfach ein “i” anhängen:

$new_string = preg_replace('/(\b'.$exact_string.'\b)/i', $replace_with);

Edit:

Plötzlich tauchte diese Warnung bei der Übergabe eines ganz normalen Strings auf:

preg_replace() [function.preg-replace]: Unknown modifier 't'

Abhilfe schaffte die Änderung der Delimiter von Slash (/) auf Pipe (|):

$new_string = preg_replace('|(\b'.$exact_string.'\b)|i', $replace_with);


Copyright © 2007-2012 iTopia. All rights reserved.
Jarrah theme by Templates Next | Powered by WordPress