präformatierten text aus HTML auslesen und in MYSQL speichern

burnhard

Grünschnabel
Hallo,

bin ein newbie in Sachen PHP und bin jetzt auf ein Problem gestossen.
Möchte eine präformatierten Text aus einem HTML-File Zeile für Zeile auslesen und in MYSQL abspeichern...

das ganze hat ungefähr folgendes Format:
HTML:
<p><pre>
Rang St-Nr.	Name	 Verein Punkte
1 134 SPRINGER HARALD	 ADORF	84
2 164 PASSENBRUNNER THOMAS BDORF	77
3 162 HIESMAIR JUERGEN	 CDORF 64
</pre></p>

jede Spalte in diesem Text sollte dann also auch in der DB-Tabelle eine eigene Spalte sein.
gibts da einen Befehl dafür, dass die einzelnen Wörter einer Zeile getrennt in ein Array gespeichert werden und das/die Leerzeichen als Trennzeichen dienen?

Würd mich freuen, wenn ihr mir helfen könntet...

lg,
burnhard
 
Solange die einzelnen Attribute signifikante getrennt sind (z. B. durch Tabulatoren) ist es möglich, diese zu trennen:
PHP:
<?php

	$string = '<p><pre>
Rang	St-Nr.	Name	Verein	Punkte
1	134	SPRINGER HARALD	ADORF	84
2	164	PASSENBRUNNER THOMAS	BDORF	77
3	162	HIESMAIR JUERGEN	CDORF	64
</pre></p>';
	preg_match('/<pre>([^<]*)<\/pre>/', $string, $matches);
	$matches = preg_split('/(?:\x0D\x0A|\x0A|\x0D)/', trim($matches[1]));
	unset($matches[0]);
	foreach( $matches as $key => $match ) {
		preg_match('/^([0-9]+)\x09*([0-9]+)\x09\*([A-Z\x20]+)\x09*([A-Z]+)\x09\*([0-9]+)$/', $match, $temp);
		$matches[$key] =  array_splice($temp, 1, count($temp));
	}
	print_r($matches);

?>
 
Hallo,
Hier ist noch eine möglichkeit.
PHP:
<?php

$string = <<<END
	<p><pre>
Rang	St-Nr.	Name	Verein Punkte
1	134	SPRINGER	HARALD	ADORF	84
2	164	PASSENBRUNNER	THOMAS	BDORF	77
3	162	HIESMAIR	JUERGEN	CDORF	64
	</pre></p>
END;

$string = trim(strip_tags($string));      // html tags und leerzeichen entfernen 
$string = preg_split("[\s]",$string);      // in ein array aufteilen
$string = array_slice($string,5);           // entfernt die ersten einträge (Rang, St-Nr usw)

// Optional 

$string = array_chunk($string,6);       // Teile dir das Array in verschiedene Arrays mit einem Werten (einträge) auf. (Einfacher um in die Datenbank zu speichern.

?>
Ich hoffe das hilft.
MfG
 
Hallo!

Du kannst grds. auch an Leerzeichen trennen, nur werden in Deinem Beispiel dann auch der Name in Vor - und Nachname aufgesplittet, da diese durch ein Leerzeichen voneinander getrennt sind.

Grüße

Martin
 
PHP:
  $text = "111-abc-222";
 list ($xxx[1], $xxx[2], $xxx[3] ) = split('[(-)]', $text]); // als Trennzeichen werden nur Bindestriche (-) angenommen.
  
  echo $xxx[1]; //gibt 111 aus
  echo $xxx[2]; //gibt abc aus
 echo $xxx[3]; //gibt 222 aus

Wenn du zb nach Worten trennen möchtest ersetze diese mit
PHP:
  $text = str_replace("abc", "@", $text); // ersetzt abc durch @
   $text = str_replace("-", "", $text); // löscht die -
  list ($xxx[1], $xxx[2], $xxx[3] ) = split('[(@)]', $text]); // @ als Trennzeichen

   echo $xxx[1]; //gibt 111 aus
   echo $xxx[2]; //gibt-222 aus
 echo $xxx[3]; //ist leer
 
Zuletzt bearbeitet:
Zurück