3Danke
ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
345
345
EMPFEHLEN
-
07.01.12 17:49 #1
Hallöle
Mit Preg Match hab ich so immer meine Schwierigkeiten.
Ich möchte eine Tabelle auslesen und diese in Mysql schreiben, irgendwas hab ich aber bei der Pattern falsch eingegeben weil ich als Resultat die Namen mit der Tabelle geliefert bekomme.
$name liefert mir <td class="column1">NameXyz</td>PHP-Code:preg_match_all('/<td class=\"column1\">(.*)<\/td>/isU', $table, $treffer);
foreach ($treffer as $key => $value) {
foreach ($value as $name) {
echo $name;
//$insert = "INSERT INTO tabelle (name) values ('$name')";
//$db->query($insert);
}
}
ich brauch aber nur den NameXyz
-
07.01.12 17:59 #2
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Moin,
ich bin kein Regex-Experte, aber ich würde mal das hier versuchen:
Code php:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<?php $table = <<<EOT <table class="foo"> <tr> <td class="column1">Zeile1 - Spalte1</td> <td class="column2">Zeile1 - Spalte2</td> </tr> <tr> <td class="column1">Zeile2 - Spalte1</td> <td class="column2">Zeile2 - Spalte2</td> </tr> </table> EOT; preg_match_all('/<td class="column1">([^<\/td>].+?)<\/td>/is', $table, $treffer); array_shift($treffer); foreach ($treffer as $key => $value) { foreach ($value as $name) { var_dump( $name ); //$insert = "INSERT INTO tabelle (name) values ('$name')"; //$db->query($insert); } }
Du hast den Ungreedy-Modifier eingebaut, den würde ich weglassen, sonst bekommst du ungewollte Resultate.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Hier stand Unfug.
-
07.01.12 18:23 #4
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Ja (siehe Edit :-D), aber trotzdem war die zweite Ausgabe ohne den HTML Teil (es sind ja zwei Gruppen). Also hat sein Code korrekt funktioniert, nur ohne "PREG_SET_ORDER" lässt sich mit Gruppen nicht intuitiv arbeiten.
PHP-Code:<?php
$table = <<<EOT
<table class="foo">
<tr>
<td class="column1">
Zeile1 - Spalte1
</td>
<td class="column2">Zeile1 - Spalte2</td>
</tr>
<tr>
<td class="column1">Zeile2 - Spalte1</td>
<td class="column2">Zeile2 - Spalte2</td>
</tr>
</table>
EOT;
preg_match_all('/<td class=\"column1\">(.*)<\/td>/isU', $table, $matches, PREG_SET_ORDER);
foreach($matches as $match) {
echo $match[1];
echo "\n";
}
?>
-
08.01.12 13:37 #6
Spitze ich danke euch beiden

Funktioniert
-
08.01.12 14:54 #7
Jetzt hab ich aber noch ein kleines Problemchen, wie bekomme ich alles auf einmal in die Mysql Datenbank eingefügt ?
PHP-Code:preg_match_all('/<td class=\"column1\">(.*)<\/td>/isU', $table, $column1, PREG_SET_ORDER);
preg_match_all('/<td class=\"column2\">(.*)<\/td>/isU', $table, $column2, PREG_SET_ORDER);
preg_match_all('/<td class=\"column3\">(.*)<\/td>/isU', $table, $column3, PREG_SET_ORDER);
foreach($column1 as $match) {
echo $match[1];
echo "\n";
$insert = "INSERT INTO tabelle (name) VALUES ('$match[1]')";
$db->query($insert);
}
-
PHP-Code:
$query = 'INSERT INTO t (name) VALUES ';
foreach($matches as $match) {
$query = $query."('".mysql_real_escape_string($match[1])."'),";
}
$query = substr($query, 0, strlen($query) - 1);
$query .= ';';
echo $query;
-
08.01.12 15:51 #9
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Könnte man die preg-Aufrufe nicht zusammen in einen kombinieren, also etwa so:
Code php:1
preg_match_all('/<td class=\"column[1-3]\">(.*)<\/td>/isU', $table, $columns, PREG_SET_ORDER);
Dann könntest du dir nämlich auch 3 foreach-Durchläufe sparen
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
08.01.12 15:56 #10
Das geht nicht weil die Werte von column1 in eine Datenbank Spalte kommen und die von 2 in die 2te Spalte.
Sonst hab ich ja alle 3 in einer Spalte oder ?
-
08.01.12 16:01 #11
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Richtig, das konnte man aber nicht erkennen
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
08.01.12 16:08 #12
Jap konnt man nicht
-
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:
Aber trotzdem sollte man das mit #8 kombinieren.PHP-Code:<?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";
}
?>
-
Ich denke mal, so sollte es passen:
GrußPHP-Code: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 );
-
08.01.12 16:23 #15
Jawohl jetzt funktionierts, wusste nicht das man alle 3 in eine preg_match Abfrage bekommt.
Beide Script funktionieren Super
Vielen Vielen Dank
Geändert von Starfox2007 (08.01.12 um 16:31 Uhr)
Ähnliche Themen
-
Preg Match
Von Lektor21 im Forum PHPAntworten: 8Letzter Beitrag: 15.10.09, 11:16 -
Preg match all Problem
Von starfoxfs im Forum PHPAntworten: 2Letzter Beitrag: 11.05.09, 09:09 -
preg match, anders rum?
Von QUEST08 im Forum PHPAntworten: 2Letzter Beitrag: 20.12.08, 13:33 -
Preg Match
Von Sturm im Forum PHPAntworten: 2Letzter Beitrag: 19.03.07, 15:23 -
Preg-Match problem
Von kevkev im Forum PHPAntworten: 2Letzter Beitrag: 12.07.05, 17:52





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren