Regex: Alles ersetzen außer ein bestimmter String

Iches

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem, ich habe ein Script das quasi nach bestimmten Wörtern in einem Text sucht, und diese dann markiert, nun möchte ich aber, dass dieses Script die ganzen Wörter findet außer die Wörter die in einem bestimmten String stehen, als Beispiel

Code:
Hallo Welt ist super! // Dann soll Welt markiert werden
Ich mag die Welt gar nicht // Dann soll Welt nicht markiert werden, weil davor "die" und dahinter "gar" steht.

Ich wäre um Hilfe dankbar.
 
Wenn du weißt welcher String übrig bleiben soll kannst du ja gleich mit diesem Text arbeiten.

PHP:
$Suche = 'Welt';

$Text1 = 'Hallo ' . $Suche . ' ist super!';
// Wozu regex:
$Text2 = 'Ich mag die ' . $Suche . ' gar nicht';
 
Nein, nein. Ich habe in dem Text halt mehrere Welt (quasi), aber halt zwar oder drei von den anderen die ich nicht markieren möchte.
 
Mit regex wird dein Vorhaben sofern nicht gehen da du ja vor und nach Welt unterschiedliche Strings willst. Ich hab da mal meine Idee kurz ausgeführt, jedoch nicht getestet.

PHP:
$Suchstring = 'Welt';
// ArrayIndex steht für die Anzahl der Welt im Eingangsstrings
// Der Wert ist ein Array mit Strings welche eingefügt werden sollen
$Ersetzen = array();
$Ersetzen[0] = array('Hallo Welt');
$Ersetzen[1] = array('Ich mag die ',
					 ' gar nicht');
$Ersetzen[2] = array('Diese ',
					 'will keiner da diese ',
					 ' zu verschmutzt ist');
					 
 // Testbeispiele
$Bsp = array(// 0x Welt
			'Ich beinhalte dieses Wort nicht', 
			 // 1x Welt
			 'Hallo Welt ist super!',            
			 // 2x Welt
			 'Ich mag diese Welt, diese         
			  Welt hat viel natur');          

// Beispiele ausführen			  
foreach($Bsp as $Beispiel)
{
	// Anzahl des Suchstring ermitteln
	$Anzahl = substr_count($Suchstring, $Beispiel);
	
	
	if ( $Anzahl == 0) // Bei 0 Vorkommen --> Ersetzen
	{
		echo $Ersetzen[0];
	}
	else
	{
		// Ersetzstring + Wort 
		for($i = 0; $i < $Anzahl; $i++)
		{
			// Beim Letzen das Suchwort weg lassen 
			if($i == $Anzahl-1)
				echo $Ersetzen[$Anzahl][$i];
			else
				echo $Ersetzen[$Anzahl][$i] . $Suchstring;
		}
}
 
Vielen Dank für die Hilfestellungen, aber ich habe nun einfach etwa darum gebaut, um nicht auf dieses Problem zu treffen.
 
Zurück