da mein letzter thread geschlossen wurde, weil das problem gelöst war (…) muss ich für die frage einen neuen aufmachen.
ich hab bei php.net gesucht aber keine funktion gefunden die mir einen bestimmten string so kürzt, dass mir eine beliebige anzahl von zeichen vor und nach einem bestimmten teilstring bleibt und alles andere gelöscht wird.
sowas?
[PHP]
//function str_cut
//$needle -string
//$string -string
//$space_before -integer
//$space_after -integer
function str_cut($needle, $string, $space_before, $space_after) {
//retrieving the starting position of substing needle in sting
$pos=strpos($string, $needle);
//if needle has been found in sting return the substring otherwise return false
if($pos!==false) {
//call of substr to return the selected string part (substr(string, start, length))
return substr($string, $pos-$space_before, $space_before+strlen($needle)+$space_after);
} else {
//return false
return false;
}
}
[/PHP]
Wenn ich das richtig verstehe möchtest du mit deiner Funktion alle in $part enthaltenen Teilzeichenketten in $str ersetzen.
Wenn dem so ist finde ich deine Funktion etwas umständich…
[PHP]
function re_multi_eregi_replace($asearch, $cstring) {
foreach($asearch as $csearch) {
$creplacement = ‚‘.$csearch.‚‘;
$cstring = str_ireplace($csearch, $creplacement, $cstring);
}
return $cstring;
}
[/PHP]
Aufruf
[PHP]
$treffer = re_multi_eregi_replace(explode(’ ', $_POST[‚ktn_vts‘]), $row[$feld]);
[/PHP]
wenn aber jemand test t eingeben würde dann kommt logischerweisse das:
<span class=„hit“>test
also: ich brauche eine function oder einen befehl, der macht, dass nur ein bestimmter teil eines strings von der funktion verändert werden darf(optimal wäre sowas
kannst du mir sagen, wieso ich immer mit meinem in eine endlosschleife kommen bin?
Ich glaube nicht das diese Schleife jemals ein Ende findet:
[PHP]while ( $part = explode($sep, $parts) )[/PHP]
großes problem…
Du willst also einen Text nach Wörtern durchsuchen und diese dann in irgendeiner Form hervorheben.
Wenn es sich um gut formatierten Text handelt (sprich nach jedem Satzzeichen folgt ein Leerzeichen), dann könntest du nach Wörtern suchen die ein vorangestelltes Leerzeichen haben. Also statt nach „t“ suchst du dann nach " t". Nachteil dieser Variante ist das Teile eines Wortes nich gefunden werden.
Hier mal zum Testen:
[PHP]
function re_multi_eregi_replace($asearch, $cstring) {
foreach($asearch as $csearch) {
$creplacement = ‚‘.$csearch.‚‘;
$cstring = str_ireplace(’ '.$csearch, ’ '.$creplacement, $cstring);
}
return $cstring;
}
[/PHP]
Die Funktion str_replace() bzw. str_ireplace() akzetiert auch ein Array als Parameter für search. Vielleicht funcktioniert es ja so das die t’s in deiner Ersetzung nicht ersetzt werden.
Auch eine Variante mit preg_replace() wäre denkbar, nur sollte bei einfachen Ersetzungen immer str_replace() der Vorzug gegeben werden.