wert zwischen "wert" auslesen

ultrakollega

Erfahrenes Mitglied
hi leute,

hab mal wieder ein problem, und ich weiß nicht wonach suchen um es
zu lösen.

habe eine textdatei, darin stehen folgende strings zeile für zeile:

OrtText[0][16]="Klaus";
OrtText[0][17]="Koblach";
OrtText[0][18]="Langen";
OrtText[0][19]="Laterns";
OrtText[0][20]="Lauterach";

wie kann ich nun nur die werte in anführungszeichen rausfiltern das
das ganze dann so aussieht:

Klaus
Koblach
Langen
Laterns
Lauterach

danke leute
 
Hallo.

Was soll das folgende eigentlich sein? Das Array, das durch die Funktion file() zustande kommt, oder die Textdatei, die ausgelesen werden soll?

OrtText[0][16]="Klaus";
OrtText[0][17]="Koblach";
OrtText[0][18]="Langen";
OrtText[0][19]="Laterns";
OrtText[0][20]="Lauterach";

Ich bin erstmal davon ausgegangen, dass das die Textdatei ist.
Die kann man dann mit folgendem Script auslesen:

Code:
$text = file("text.txt");
foreach ($text as $zeile) {
	$anfang = strpos($zeile, '"');
	$ende = strrpos($zeile, '"');
	$string = substr($zeile, $anfang+1, $ende-$anfang-1);
	echo $string;
	echo "<BR>";
}

Als Ausgabe kommt dann:

Klaus
Koblach
Langen
Laterns
Lauterach

Ist das das, was du wolltest?
 
^^
Die Frage ist dann aber ob es nicht sinvoller wäre wenn du dir von dieser Textdatei ein Array generieren lässt und das zurückgibst.
Das was du gemacht hast ist Praktisch ein umständliches Zeilen auslesen.
Da hättest ja gleich jeden Namen in eine Zeile schreiben können dann hätteste das mit File() auslesen können und hättest somit nen Array ^^.

mach lieber statt der 0 -> Name
dann generiert man aus der txt ein assoziavies Array dann haste ein Array $test[Name][0-x];.
 
Hier mal eine Lösung.
Auch wenn Sie nicht so Perfekt ausgearbeitet ist erfüllt Sie ihren Zweg!
kann man auch erweitern..

test.php
PHP:
<?
/* begin of output */
$asozArray = returnArrayFromFile("test.txt");
foreach($asozArray as $ty => $va){
	echo "<u>$ty</u><br>";
	foreach($va as $t => $v)
		echo "$t - $v<br>";
	echo "<hr>";
}
/* end of output */

/* begin needet functions */
function deleteEmptyIndex($array){ // deletes all empty elements and returns the new array
	for($i = 0;$i < count($array);$i++){
		$array[$i] = trim($array[$i]);
		if(strLen($array[$i]) != 0)
			$newArray[] = $array[$i];
	}
	return $newArray;
}

function returnArrayFromFile($file){ // returns the text file as array
	$text = file($file);
	$text = deleteEmptyIndex($text);
	$pattern[0] = "/(\[.*?\])(\[.*?\])/i"; // finds [.*][.*]
	$pattern[1] = "/(\".*?\")/i"; // finds ".*"
	foreach($text as $v){
		preg_match($pattern[0],$v,$matches);
		$str[0] = preg_replace("/[\[\]]/i","",$matches[1]);
		$str[1] = preg_replace("/[\[\]]/i","",$matches[2]);

		preg_match($pattern[1],$v,$matches);
		$asozArray[$str[0]][$str[1]] = $matches[1];
	}
	return $asozArray;
}
/* end needet functions */
?>

test.txt
PHP:
OrtText[Name][1]="Klaus";
OrtText[Name][2]="Koblach";
OrtText[Name][3]="Langen";
OrtText[Name][4]="Laterns";
OrtText[Name][5]="Lauterach";

OrtText[Stadt][1]="München";
OrtText[Stadt][2]="Hamburg";
OrtText[Stadt][3]="Berlin";
OrtText[Stadt][4]="Dortmund";
OrtText[Stadt][5]="Köln";



OrtText[Ka][5]="Test";
 
Hab's jetzt nicht getestet, müsste aber auch funktionieren :

PHP:
$regex = "#\"(.*)\"#i";

foreach($array as $zeile)
{
 preg_match_all($regex, $zeile, $wert);
 echo $wert[1]."<br>";
}

Jona
 
Zurück