Hallo
Ich habe hier mein Übersetzungs Script erstellt mit großer hilfe von Andes.
Aber wenn ich jetzt zwei Wörter in der DB als ein Wort, z.B als Redewendung habe, speichere. Wird nur das letzte wort der zwei oder drei wieder angezeigt.
Wie bekomme ich das hin?
Hier ist das Script:
PHP-Code:
<html>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>Text:<br>
<textarea name="wort"><? if(isset($_POST['wort'])) echo($_POST['wort']); ?></textarea>
Sprache:
<select name="sprache" size="1">
<option value="de|en">Deutsch - Englisch</option>
<option value="en|de">Englisch - Deutsch</option>
</select>
<input type="submit" name="submit" value="Los">
</form>
</html>
<?php
if(isset($_POST['wort'])) {
$string = $_POST['wort'];
$sprache = $_POST['sprache'];
//Ausgewählte Übersezung, String teilen
$sprache_array = explode("|", $sprache);
//Wort, von der Sprache
$wort_von = $sprache_array[0];
//in die Sprache übersetzt werden soll
$wort_in = $sprache_array[1];
setlocale(LC_CTYPE, "de_DE"); //Dies in deinem Script notieren ansonsten werden dir auch alle Umlaute mit entfernt
$entf[0] = "/\W/"; //entfernt alle Sonderzeichen aus dem Satz, auch Leerzeichen
$einf[0] = " "; //setzt für alle entfernten Sonderzeichen ein Leerzeichen ein
$entf[1] = "/( ){2,}/"; //ersetzt alle doppelten Leerzeichen
$einf[1] = " "; //durch ein Leerzeichen
$entf[2] = "/( )$/"; //ersetzt ein Leerzeichen am Ende
$einf[2] = ""; //durch nichts
$entf[3] = "/ /"; //ersetzt alle Leerzeichen
$einf[3] = "' or wort_".$wort_von." like '"; //mit diesem
$satz = preg_replace($entf, $einf, $string);
$sql = "SELECT wort_".$wort_von." as entfernen, wort_".$wort_in." as einfügen FROM uebersetzer WHERE wort_".$wort_von." like '$satz'";
$query = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($query) > 0) {
while($row = mysql_fetch_object($query))
{
//Treffer in Array speichern
$ausg_entf[] = "/\b".$row->entfernen."\b/i"; $ausg_einf[] = $row->einfügen;
}
//Ausgabe mit preg_replace
//ersetze eingegebene Wörte mit übersetzten Wörtern
echo preg_replace($ausg_entf, $ausg_einf, $string);
}
else {
echo $string;
}
}