[PHP] erstes vorkommen eines strings in einem anderen string
flaimo 20.05.2002 - 01:30 966 4
flaimo
ILFTKYS
|
folgendes. ich hab da einen artikel und einen suchbegriff und ich hätte gern die position vom ersten vorkommen des suchbegriffes in dem artikel. ich hab zwar schon in mein php buch gesucht, aber nur a funktion für das finden von einem buchstaben gefunden (strpos / strrpos), aber ned von einem string...
hätte nämlich gern, dass - ausgehend vom ersten vorkommen des suchbegriffes - in beide richtungen 300 zeichen dazugezählt werden und das ganze dann quasi als ausschnitt des ganzen artikels beim suchergebnis angezeigt wird.
|
noledge
CWNE #540
|
$kette = "ein kleines beispiel fuer den flaimo";
$pos = strpos($kette, "den");
funktioniert ohne probleme...
liefert in dem fall 26 - bei 0 zu zählen beginnen und es passt.
Bearbeitet von noledge am 20.05.2002, 09:13
|
flaimo
ILFTKYS
|
also das hab ich auch schon probiert und das geht leider nicht. das wort kommt zwar im text vor und wird dann beim suchergebnis angezeigt. als position bekomm ich aber mit strpos meist "0" obwohl das wort irgendwo mitten drunter vorkommt.
|
bernhard
Little Overclocker
|
Bitte Beispiele! Anmerkung: strpos() ist case sensitive. Mir scheint, als möchstest Du ohnehin etwas Mächtigeres als strpos(). Vorschlag: <?
$haystick="Das ist ein langer Text. In ihm sind einige besondere Wörter verborgen, die ich mir gleich im Kontext anzeigen lassen werde.";
$needle="kontext";
$n=15;
if(preg_match("/(.{0,".$n."})(".$needle.")(.{0,".$n."})/i",$haystick,$regs)) {;
$cutout=$regs[1]."<span style=\"color : #f00;\">".$regs[2]."</span>".$regs[3];
print("haystick: "".$haystick.""<br>\n");
print("needle: "".$needle.""<br>\n");
print("cutout: "".$cutout.""<br>\n");
} else {
print("no match for "".$needle.""!");
}
?>
Natürlich sind hier noch leicht weitere Verbesserungen wie z.B. das Vermeiden von abgeschnitternen Wörtern möglich.
|
flaimo
ILFTKYS
|
danke, hat sich bereits erledigt. hatte einen denkfehler im scriptablauf
|