[PHP] Zeichen direkt nach einem String erkennen.

topfklao

Christoph N.
ID: 118468
L
20 April 2006
885
17
Hey,, heute gehen mir die Fragen einfach nicht aus..^^
Also:
Ich habe einen bestimmten String:
$string = "Ich gehe raus";
In diesem String wird durch str_replace das Wörtchen "geh" durch "<b>geh</B>" ersetzt und somit fett. Das "e" bleibt jedoch normal.. Was könnt ich machen, dass dies auch noch zusätzlich ersetzt wird, da es ja sozusagen gleich das nachfolgende Zeichen des Strings ist..
Einfach das Wort "gehe" ersetzten ist für mich leider nicht die Lösung :p

Danke für eure Hilfe!
icon6.gif
 
ganzen string anhand des leerzeichens splitten
dann jedes einzelne element untersuchen ob string passt, das ganze element dann auf bold setzen und array anhand eines leerzeichens wieder verketten
 
mit dem von vorhin, dass es nur beim 1. vorkommen umgesetzt wird könnte das ganze so aussehen
PHP:
$html_re = preg_replace("/\s+(\S*".$gob[begriff]."\S*)\s+/"," <b>$1</b> ",$html_re,1);
Ist halt etwas langsamer als die andere Lösung
 
Zuletzt bearbeitet:
mit dem von vorhin, dass es nur beim 1. vorkommen umgesetzt wird könnte das ganze so aussehen
PHP:
$html_re = preg_replace("/\s+(\S*".$gob[begriff]."\S*)\s+/"," <b>$1</b> ",$html_re,1);
Ist halt etwas langsamer als die andere Lösung

Ja das ist genau das was ich such!! !:D

Das Problem ist aber "nur" ,dass es mir hier auch noch Teile eines Wortes ersetzt, was davor kommt.. Was kann ich da machen.. Es soll mir ja nur ein "s" oder so welches z.b. direkt hinter dem Begriff steht ersetzen. Also z.B. Internet wird gesucht und das ganze "Internets" sollte ersetzt werden !!!

So eingebaut hät ichs jetzt:
PHP:
html_re = substr($html_re,0,$pos) . "<a $font_hyper onclick=\"document.getElementById('div$i').style.display='';\">$gob[begriff]</a>$div</u>" . substr($html_re,$pos + strlen("/\s+(\S*".$gob[begriff]."\S*)\s+/"));


Aber wahrscheinlich klappt des ned so ganz.. :( Was kann ich tun?
 
Hilft Dir das hier weiter?
PHP:
<?php
	$text = 'Das neue pneumatische, nicht neurologische Auto';
	$words = Array( 'neu' );

	$words_pattern = implode('|', $words);
	$pattern = '~\b((?:'.$words_pattern.')\S*)\b~i';
	$replace = '<strong>$1</strong>';

	echo preg_replace( $pattern, $replace, $text );
?>
Falls Du nicht willst, dass neurologische auch markiert wird, musst Du in $pattern die Stelle \S* durch \S{0,x} ersetzen, wobei Du für x noch die maximale Anzahl an Zeichen angeben musst, die nach einem Wort markiert werden soll.