MyBB.de Forum
Umlaute in ae ue oe konvertieren? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: Umlaute in ae ue oe konvertieren? (/thread-31123.html)

Seiten: Seiten: 1 2


Umlaute in ae ue oe konvertieren? - lantis - 13.12.2014

Huhu, ich habe folgendes Script "Letzte Themen" auf meiner Seite eingebunden und habe eine Funktion dafür geschrieben das die Umlaute ersetzt werden sollen, die dort ausgegeben werden.

Allerdings funktioniert die Ausgabe nicht und ich bekomme den Fehler "Fatal error: Cannot redeclare umlaute_ersetzen() (previously declared"

(Zugangsdaten durch xxx ersetzt)

PHP-Code:
<?php
                        
                            
// Daten für Verbindung zur Datenbank
                                
$db_data = array("host"=>"xxx""user"=>"xxx""pw"=>"xxx""db"=>"xxx");
                            
// Url zur Weiterführung zum Forum
                                
$url "http://www.sw-battlefront.de/forum"// Oder im Root installiert http://xxx.de
                            // Verbindung zum MySQL
                                
mysql_connect($db_data["host"],$db_data["user"],$db_data["pw"]) or die("Keine Verbindung.");
                            
// Auwahl der Datenbank
                                
mysql_select_db($db_data["db"]) or die("Keine Datenbank.");
                            
// Ausführen des Query
                                
$result mysql_query("SELECT * FROM mybb_threads t INNER JOIN mybb_posts p ON (t.firstpost=p.pid) WHERE t.fid IN (2,4,5,6) ORDER BY t.tid DESC LIMIT 0,3;");    
                                while(
$row mysql_fetch_object($result)) {
             
                        
?>
                        <!-- Hier HTML mit untstehenden Codes verbinden -->
                            <!-- Link zum Thread + Threadname -->
                                <?php echo ""
                                
                            function 
umlaute_ersetzen($text){ 
                            
$such_array  = array ('ä''ö''ü''ß'); 
                            
$ersetzen_array = array ('ae''oe''ue''ss'); 
                            
$neuer_text  str_replace($such_array$ersetzen_array$text); 
                            return 
$neuer_text
                                                            } 
                            
$umlaut_text="<a href=\"".$url."/showthread.php?tid=".$row->tid."\" target=\"_blank\">".$row->subject."</a>"
                            echo 
umlaute_ersetzen($umlaut_text); 
                                
                                
                                
?>
                                
                        <?php ?>

Kann mir bitte jemand helfen? Sad


RE: Umlaute in ae ue oe konvertieren? - StefanT - 13.12.2014

Du definierst die Funktion in einer while-Schleife. Daher kommt es beim 2. Durchlauf zu einem Fehler.
Wenn du deine Funktion außerhalb der Schleife definierst, sollte es funktionieren.

Darf man fragen, warum du die Umlaute ersetzen willst? Wink


RE: Umlaute in ae ue oe konvertieren? - SvePu - 13.12.2014

Probiere doch auch mal die new_thread.php aus diesem Thema: https://www.mybb.de/forum/thread-21150.html


RE: Umlaute in ae ue oe konvertieren? - lantis - 13.12.2014

Habe den Code geändert, Umlaute werden trotzdem nicht ersetzt. Ich bitte um Hilfe.

PHP-Code:
<?php
                        
                            
// Daten für Verbindung zur Datenbank
                                
$db_data = array("host"=>"xxx""user"=>"xxx""pw"=>"xxx""db"=>"xxx");
                            
// Url zur Weiterführung zum Forum
                                
$url "http://www.sw-battlefront.de/forum"// Oder im Root installiert http://xxx.de
                            // Verbindung zum MySQL
                                
mysql_connect($db_data["host"],$db_data["user"],$db_data["pw"]) or die("Keine Verbindung.");
                            
// Auwahl der Datenbank
                                
mysql_select_db($db_data["db"]) or die("Keine Datenbank.");
                            
// Ausführen des Query
                                
$result mysql_query("SELECT * FROM mybb_threads t INNER JOIN mybb_posts p ON (t.firstpost=p.pid) WHERE t.fid IN (2,4,5,6) ORDER BY t.tid DESC LIMIT 0,3;");    
                                while(
$row mysql_fetch_object($result)) {
             
                        
?>
                        <!-- Hier HTML mit untstehenden Codes verbinden -->
                            <!-- Link zum Thread + Threadname -->
                        
                                
                        <?php 
                        
                        $umlaut_text
="<a href=\"".$url."/showthread.php?tid=".$row->tid."\" target=\"_blank\">".$row->subject."</a>";
                        echo 
umlaute_ersetzen($umlaut_text);
                        
                        } 
                        
                            function 
umlaute_ersetzen($text){ 
                            
$such_array  = array ('ä''ö''ü''ß'); 
                            
$ersetzen_array = array ('ae''oe''ue''ss'); 
                            
$neuer_text  str_replace($such_array$ersetzen_array$text); 
                            return 
$neuer_text
                                                            } 
                             
                            
                        
                        
?>



RE: Umlaute in ae ue oe konvertieren? - StefanT - 13.12.2014

Vermutlich stimmt die Kodierung der Datei nicht.
(13.12.2014, 20:30)StefanT schrieb: Darf man fragen, warum du die Umlaute ersetzen willst? Wink



RE: Umlaute in ae ue oe konvertieren? - lantis - 13.12.2014

(13.12.2014, 21:54)StefanT schrieb: Vermutlich stimmt die Kodierung der Datei nicht.

(13.12.2014, 20:30)StefanT schrieb: Darf man fragen, warum du die Umlaute ersetzen willst? Wink

Also dort, wo die Themen angezeigt werden sollen, auf meiner Website, habe ich die Dateien in utf-8 ohne BOM abgespeichert.

Der Grund, warum ich das umwandeln will ist eben der, weil äöü zwar im Forum korrekt dargestellt werden, allerdings nicht auf meiner Website, wo die letzten Themen ausgelesen werden. In der Mysql - Datenbank steht auch alles korrekt drin mit Sonderzeichen, es wird nur nicht korrekt ausgegeben.

Das versteh ich nicht.


RE: Umlaute in ae ue oe konvertieren? - SvePu - 13.12.2014

Ersetze im <head> das:
Code:
<meta charset="utf-8" />
mal gegen:
Code:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />



RE: Umlaute in ae ue oe konvertieren? - lantis - 13.12.2014

Funktioniert nicht. Wenn ich das Script direkt aufrufe erscheinen auch nur Quadrate im IE sowie Fragezeichen im Mozilla, stelle ich die Codierung auf Westeuropäisch im Browser, funktioniert es zwar, beim nächsten laden der Seite ist es aber wieder anders. Sad


RE: Umlaute in ae ue oe konvertieren? - SvePu - 13.12.2014

Fülle mal bitte die angehängte new_threads.php mit deinen Daten aus und kopiere sie ins Homepage Root auf den Server (wo auch die index.php der Hauptseite liegt)

Binde die Datei dann über folgendes in die Sidebar ein:
Code:
<article>
<h2>Neues aus dem Forum</h2>
<?php include 'new_threads.php'; ?>
</article>



RE: Umlaute in ae ue oe konvertieren? - lantis - 13.12.2014

Vielen Vielen Vielen Dank, es funktioniert. Smile Aber woran hat es denn jetzt gelegen? An mir oder an was, ich möchte nicht doof sterben? Wink

Und wie kann ich die Liste formatieren? Sind die
Code:
<div id="threads"><ul class="new_threads">
irgendwo definiert oder kann ich das in meiner Style Datei zuweisen?