string zerlegen

HammerHe@rt

Erfahrenes Mitglied
Ich habe einen String in der Variable $string, welcher also Text enthält!
Dieser wird anhand von einem Suchstring durchsucht...die in der Variablen $ss1 steht!

Wie kann ich den String in $string nun so bearbeiten, das dieser bei der Ausgabe nach der Suche
1. mit dem Suchstring $ss1 im Text beginnt (fett) und der string noch 100 Zeichen weiter geht...

also quasi nach der suche der text mit dem betreffenden suchstring beginnt und noch bischen weiter geht...so in der art wie bei google

mfG
SvenS.
 
Versuch's mal mit
PHP:
$result = str_replace($ss1, '<b>' . $ss1 . '</b>', substr($string, strpos($string, $ss1), strlen($ss1) + 100));

Zur Erklärung:
Zuerst wird mittels strpos() die Stelle gesucht, an der $ss1 zum ersten Mal auftritt. Dort beginnt substr() und als Länge erhält es dann 100 + Länge des Suchstrings (du wolltest ja die nächsten 100). Danach wird mittels str_replace() $ss1 gegen '<b>' . $ss1 . '</b>' ersetzt, also fett gedruckt. Alles klar? ;-)

Möglicherweise ist es mit regular expressions leichter zu bewerkstelligen, jedoch vergesse ich auf Grund seltener Benutzung jedesmal die genaue Syntax, hehe. Normalerweise sind die nativen PHP-Funktionen aber sowieso schneller :P
 
Zuletzt bearbeitet:
de.php.net:

strpos -- Sucht erstes Vorkommen des Suchstrings und liefert die Position

substr -- Gibt einen Teil eines Strings zurück

Also Beispiel:
PHP:
$pos = strpos($string, $ss1);

echo "<b>".substr($string,$pos,$pos+100)."</b>";

Viel Erfolg !

[EDIT]Mist da war einer schneller ;o)[/EDIT]
 
wenn ichs so mache dann is $pos immer leer oder false

da laut beschreibung der funktion...
wenn needle kein string (is ja eine variable) die in ein integer wert umgewandelt wird....was auch immer das bedeutet...

also mit echo $pos schreibt er mir keine Zahl hin....nix
 
öhm was fürn code? da gibs nix weiter bis auf die beiden Vars...

PHP:
$string = "Wir haben Otto gefragt, ober er nicht mit zu Hannes will, um sein Auto abzuholen!";
$ss1 = "Otto";

nur is der string bzw der suchstring ss1 ja immer unterschiedlich so das man mit den variablen arbeiten muss...

jedoch scheint die funktion strpos keinen wert zu liefern wenn man als needle ne var nimmt....

jedenfalls bekomm ich da nix raus für $pos und kann somit nicht damit weiterarbeiten
 
PHP:
<?
$string = "Wir haben Otto gefragt, ober er nicht mit zu Hannes will, um sein Auto abzuholen!";
$ss1 = "Otto";

$pos = strpos($string, $ss1);

echo "Position: ".$pos."<br>";

echo "<b>".substr($string,$pos,$pos+100)."</b>";
?>
Das funktioniert bei mir wunderbar. Die Ausgabe ist:

Position: 10
Otto gefragt, ober er nicht mit zu Hannes will, um sein Auto abzuholen!
 
Tefla deins klappt zwar aber ergibt nicht das Ergebnis was es soll
er will es wie bei Google das du nen Suchparameter angibst und NUR der Suchparameter Fett gemacht wird

Hoffe das hier hilft dir! :)
Man könnte noch sagen das er x zeichen davor noch anzeigen soll
PHP:
<?
$showChars = 37;
$text = "Wir haben Otto gefragt, ober er nicht mit zu Hannes will, um sein Auto abzuholen!";
$searchString = "ober er"; // firstOcurence

$replacement = "<b>$2</b>$3 ..."; // hier wird der string zusammen gebaut 
//(1 vorher)(2 suche)(3 anzahlZeichenDannach)(4 Rest)

echo returnSubstring($text,$searchString,$showChars,$replacement);

function returnSubstring($text,$searchString,$showChars,$replacement){
	$pattern = "/(.*)($searchString)(.{0,$showChars}.*? )(.*)/";
	return preg_replace($pattern,$replacement,$text);
}
?>

Ich habe nun auch noch mit eingebaut das er das letzte Wort nicht einfach abbricht sondern noch zu ende schreibt! also nicht das Hann rauskommt sondern Hannes

hier also die Funktion
PHP:
function returnSubstring($text,$searchString,$showChars,$replacement){
	$pattern = "/(.*)($searchString)(.{0,$showChars}.*? )(.*)/";
	return preg_replace($pattern,$replacement,$text);
}
?>
 
Zuletzt bearbeitet:
Zurück