Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste
Umlaute in ae ue oe konvertieren?
#1
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
Zitieren
#2
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
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Probiere doch auch mal die new_thread.php aus diesem Thema: https://www.mybb.de/forum/thread-21150.html
Zitieren
#4
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
                                                            } 
                             
                            
                        
                        
?>
Zitieren
#5
Vermutlich stimmt die Kodierung der Datei nicht.
(13.12.2014, 19:30)StefanT schrieb: Darf man fragen, warum du die Umlaute ersetzen willst? Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#6
(13.12.2014, 20:54)StefanT schrieb: Vermutlich stimmt die Kodierung der Datei nicht.

(13.12.2014, 19: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.
Zitieren
#7
Ersetze im <head> das:
Code:
<meta charset="utf-8" />
mal gegen:
Code:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
Zitieren
#8
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
Zitieren
#9
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>


Angehängte Dateien
.php   new_threads.php (Größe: 12,57 KB / Downloads: 4)
Zitieren
#10
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?
Zitieren