Werte aus Datenbanktabelle in arrays

rernanded

Erfahrenes Mitglied
Hi,
habe das Problem Werte aus der Tabelle "worte_bedeutungen" mit den Spalten "wort" und "bedeutung" in 2 arrays zu übertragen, damit ein Text so verändert wird, daß die Worte darin, wenn sie deckungsgleich mit Werten aus Spalte "wort" sind, durch die entsprechenden Werte aus der Spalte "bedeutung" ersetzt werden.
MONI

Dazu mein Script bisher:
PHP:
<form action="<?php $_SERVER["PHP_SELF"]; ?>" method="post">
<textarea name="text" cols="100" rows="10"></textarea>
<input type="submit" value="ersetzen">
</form>
<br />
<?php
$zeichenkette = $_POST['text'];

$wort = array();

$wort[0] = '/\b'.wort.'\b/';

$bedeutung = array();

$bedeutung[0] = 'bedeutung';


echo $zeichenkette."<br /><br /><br />";
echo "<b>";
echo preg_replace($wort, $bedeutung, $zeichenkette);
echo "</b>";
?>

So hole ich die Werte aus der Tabelle:
PHP:
<?php
    define('MYSQL_HOST',     'host');
    define('MYSQL_USER',     'user');
    define('MYSQL_PASS',     'pw');
    define('MYSQL_DATABASE', 'db');

        @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
        die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
        mysql_select_db(MYSQL_DATABASE) OR
        die("Konnte Datenbank nicht benutzen. Fehlermeldung: ".mysql_error());

$sql = "SELECT * FROM worte_bedeutungen";
$result = mysql_query($sql) OR die(mysql_error());
$i = 1;
while ($row = mysql_fetch_assoc($result))
{
   $wort[$i] = $row[wort];
   $bedeutung[$i] = $row[bedeutung];
   $i++;
}
//echo "<pre>";
print_r($wort);
echo "<br />";
print_r($bedeutung);
//echo "</pre>";
?>
 
Zuletzt bearbeitet:
Wo genau liegt das Problem?
Was ergeben die print_r Auswertungen?

Beim preg_replace sieht es soweit gut aus. Ausser dass du in deinem Script einen Text mitgibst, der nix zu übersetzen drin hat. Der Text den du durchsuchst hat nur 3 Zeilenumbrüche.
 
@Yaslaw


print_r ergibt folgende Ausgabe (Beispiel):
HTML:
(
   [0] => Apfel
   [1] => Banane
   [2] => Kirsche
       (
           [0] => apple
           [1] => banana
           [2] => cherry
       )
)
preg_replace enthält als $zeichenkette den Inhalt aus der Form (name=text).

Moni
 
Zuletzt bearbeitet:
PHP:
$wort = array();
 
$wort[0] = '/\b'.wort.'\b/';
1) wort ist hier keine Variable. SOndern irgendwas. Als Variable müsstest es $wort heissen
2) Willst du aus jedem Eintrag in $wort ein Pattern bilden und nicht nur den Ersten Wert überschreiben.
3) überschreibst du mit $wort=array(); deine Auswahl aus der Datenbank mit einem leeren Array.
4) auch den $bedeutung ¨berschriebst du mit einem einem leeren Array

Nach dem obigen Code müsste pirnt_r auf $wort so aussehen
([0]=>wort)

Zuerst beim Auslesen aus der DB gleich den Pattern bilden
PHP:
while ($row = mysql_fetch_assoc($result))
{
   $pattern[i] ="/\b{$row['wort']\b/";
   $wort[$i] = $row['wort'];
   $bedeutung[$i] = $row['bedeutung'];
   $i++;
}
Und im Form dann etwa
PHP:
$zeichenkette = $_POST['text'];
 echo $zeichenkette."<br /><br /><br />";
echo "<b>";
echo preg_replace($pattern, $bedeutung, $zeichenkette);
 
Zurück