Wörter Makieren PHP

Gunah

Erfahrenes Mitglied
Moin

ich bin gerade dabei, und möchte Wörter mit PHP Makieren...

einfach währe es mit str_ireplace(), aber leider wird das Wort daruch verändert, wenn es im Orginal Groß geschrieben wurde, oder ähnlich,

Nehmen wir mal ich habe folgenden Text:
Code:
Gunah ist gunah
und ich möchte nach meinen Nick makieren
Suchstring "gunah", wenn man es mit der oberen Funktion macht wird daraus ja:
Code:
gunah ist gunah
habe es von daher wie folgt gebaut:
in einer Function:
PHP:
function converter($str, $search, $charset) {
    if(function_exists('iconv')) {
        $str = iconv('UTF-8',$charset,$str);
    }
    preg_match_all('/'.preg_quote($search).'/i', $str, $out);
    foreach ($out['0'] as $value) {
        /*array_push
        array_push*/
        $query[]  = $value;
        $replace[] = '<span class="marked">'.$value.'</span>';
    }
    return str_replace($query, $replace, $str);
}
kennt einer von euch eine besser variante?

Gruß
Gunah
 
str_ireplace geht da ganz gut (edit: sorry, da ist auch eine andere funktion). Siehe php.net http://de.php.net/manual/de/function.str-ireplace.php#86099

PHP:
// Will print "RePlaCeMe" with red color, but after this it would be "replaceme", not "RePlaCeMe"
$replace = '<font color="#FF0000">'.$search.'</font>';
echo str_ireplace($search, $replace, $text);

// Will print "RePlaCeMe" with red color
$replace = '<font color="#FF0000">$1</font>';
echo ext_str_ireplace($search, $replace, $text);

Wie du siehst ist direkt im ersten Beitrag dein Problem bereits erläutert ;)

Anders gäbe es noch den Modifier "i" für Regular Expression (hoffe das klappt so):
PHP:
$s = preg_replace("/name/i", "<strong>$1</strong>", $s);
 
Zuletzt bearbeitet:
Whops. Zu schnell drüber geflogen. Stimmt, str_ireplace ist da schlecht für.

Habs nochmal selbst geprüft und das hier hat geklappt:
PHP:
$s = "dies ist ein Text mit dem Wort teXt drin um den TEXT hervorzuheben";
$find = "text";
$s = preg_replace("/".preg_quote($find)."/i", "<strong>$0</strong>", $s);

echo $s;

Bin zu schnell heut :p
 
ah THX an preg_replace habe ich garnet gedacht *nenene*

habe es jetzt so gemacht
PHP:
function converter($str, $search, $charset) {
	if(function_exists('iconv')) {
		$str = iconv('UTF-8',$charset,$str);
	}
	/*preg_match_all('/'.preg_quote($search).'/i', $str, $out);
	foreach ($out['0'] as $value) {
		$query[]  = $value;
		$replace[] = '<span class="marked">'.$value.'</span>';
	}
	return str_replace($query, $replace, $str);*/
	return preg_replace("/".preg_quote($search)."/i", "<strong>\\0</strong>", $str);
}

Gruß
Gunah
 
Zurück