Teilstring suchen

jenno

Erfahrenes Mitglied
Ich habe eine Datei in einen String gelesen und will nun verschiedene Teilstrings nach einem bestimmten Muster suchen.

Dabei beginnt dieser Teilstring immer mit einem "missing[i]" und endet dann mit ");". Wie ich beginne, hab ich schon. Mit

PHP:
$s = strstr($s, "missing[i]");

wird am Anfang alles "abgeschnitten", was nicht dazu gehört. Aber wie kann ich jetzt das Ende vom Teilstring suchen, OHNE dass das was ich eigentlich brauche weggeschnitten wird?

Ich habe schon nachgeschaut, was es für Stringfunktionen gibt, aber da wird immer nur der Rest zurückgegeben. Und auf diesem Wege verliere ich meinen Teilstring, den ich eigentlich haben will.
 
Manchmal sieht man halt den Wald vor lauter Bäumen nicht.
Ich hab jetzt auf jeden Fall ne Lösung, die funktioniert und poste sie hier für alle, die es irgendwann noch einmal interessiert!

PHP:
<?
//Dateien die durchsucht werden müssen nach bestimmtem String "missing[i] = ...;"
$filenames = Array("checkEntries_01.js", "checkEntries_02.js");

//Name der Ausgabedatei
$outputname = "checkEntries.txt";

//wenn Ausgabedatei schon existiert....löschen
if(file_exists($outputname)) {
	unlink($outputname);
}

//Ausgabedatei öffnen
$file2 = fopen($outputname, "a");

for($i=0; $i<count($filenames); $i++) {

	//zu lesende Datei öffnen
	$file = fopen($filenames[$i],"r");

	//Gesamtgröße zu lesender Datei
	$size = filesize($filenames[$i]);

	//Inhalt zu lesender Datei in einem String speichern
	$s = fread($file, $size);

	//Temp-Variable für Zwischenspeicherung
	$temp = "";

	//solange von dem String noch was übrig ist...
	while(strlen($s)>0) {

		//alles bis "missing[i]" kann weg
		$s = strstr($s, "missing[i]");

		//alles bis zum wirklichen Beginn des zu extrahierenden Strings kann weg
		$s = substr($s, (strpos($s, "\"")+1));

		//zu extrahierenden String in $temp speichern
		$temp = substr($s, 0, (strpos($s, "\");")));

		//alles bis zum Ende des zu extrahierenden Strings kann weg
		$s = strstr($s, "\");");

		//$temp in Ausgabedatei speichern
		fputs($file2, $temp."\n");
	}

	//neue Zeile zwischen der Ausgabe aus den einzelnen Dateien
	fputs($file2, "\n");

	fclose($file);
}

fclose($file2);
?>
 
Schau dir mal im PHP-Manual die PCRE-Funktionen an...

preg_match() macht in einem Rutsch das, wöfür du mit den String-Funktionen 4 Schritte brauchst ;)
 
Zurück