Preg Match Frage

Hatte das dann eben falsch verstanden. Ich dachte du wolltest die Datebank nicht zuspammen und nur eine einzige Anfrage schicken.

Man nehme einfach noch zwei weitere Gruppen:
PHP:
<?php
$table = <<<EOT
<table class="foo">
    <tr>
        <td class="column1">Zeile1 - Spalte1</td>
        <td class="column2">Zeile1 - Spalte2</td>
        <td class="column3">Zeile1 - Spalte3</td>
    </tr>
    <tr>
        <td class="column1">Zeile2 - Spalte1</td>
        <td class="column2">Zeile2 - Spalte2</td>
        <td class="column3">Zeile2 - Spalte3</td>
    </tr>
</table>
EOT;

preg_match_all(
	'/<td class=\"column1\">(.*)<\/td>\s*<td class=\"column2\">(.*)<\/td>\s*<td class=\"column3\">(.*)<\/td>/isU',
	$table,
	$matches,
	PREG_SET_ORDER);

foreach($matches as $match) {
	echo $match[1];
	echo "\n";
	echo $match[2];
	echo "\n";
	echo $match[3];
	echo "\n";
}
?>

Aber trotzdem sollte man das mit #8 kombinieren.
 
Ich denke mal, so sollte es passen:
PHP:
function prepareQueryValues( array $matches )
{
    $query = '';
    foreach( $matches as $match ) {
        $query.= '(\''.mysql_real_escape_string( $match[1] ).'\',';
        $query.= '\''.mysql_real_escape_string( $match[2] ).'\',';
        $query.= '\''.mysql_real_escape_string( $match[3] ).'\'),';
    }

    return substr( $query, 0, - 1 ).';';
}

preg_match_all(
    '#<td class="column1">(.*?)</td>\s*'.
    '<td class="column2">(.*?)</td>\s*'.
    '<td class="column3">(.*?)</td>#is',
    $table,
    $matches,
    PREG_SET_ORDER
);

$query = 'INSERT INTO tabelle (spalte1,spalte2,spalte3) VALUES ';
$query.= prepareQueryValues( $matches );

echo $query;
$db->query( $query );

Gruß
 
Jawohl jetzt funktionierts, wusste nicht das man alle 3 in eine preg_match Abfrage bekommt.

Beide Script funktionieren Super

Vielen Vielen Dank :)
 
Zuletzt bearbeitet:
Zurück