kostenloser Webspace werbefrei: lima-city


Umlaute in News automatisch ersetzen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hallo !

    Ich habe auf meiner Seite ein PHP-Script, was mir meine News ausgibt.

    <?php
    require('sql.php');
    $query = "SELECT * from news ORDER BY datum DESC";
    $do = mysql_query($query) OR DIE("Fehler");
    
    echo "";
    while($row = mysql_fetch_assoc($do))
    {
    echo "<table cellSpacing=\"0\" cellPadding=\"2\" width=\"100%\" align=\"center\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">
    <td width=\"100%\"><b><font size=\"2\" face=\"Verdana\">$row[betreff]</font></b></td>
    <td><font size=\"2\" face=\"Verdana\">$row[datum]</font></td>
    </tr>
    <td colspan=\"2\"><font size=\"2\" face=\"Verdana\">$row[nachricht]</font></td><br>";
    }
    echo "</table>";
    ?>


    Wie mache ich es, dass die Umlaute (ü,ä,ö usw.) automatisch durch &uuml; &auml; usw. ersetzt werden?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Moin,

    http://de.php.net/manual/en/function.str-replace.php
    oder
    http://de.php.net/manual/en/function.preg-match.php

    Wären da ein paar Möglichkeiten.

    Grüße

    Edit: klickbar gemacht. :biggrin:

    Beitrag zuletzt geändert: 29.9.2009 9:04:03 von gsts
  4. $text = htmlspecialchars($text);
    $text = str_replace ("ä", "&auml;", $text);
    $text = str_replace ("Ä", "&Auml;", $text);
    $text = str_replace ("ö", "&ouml;", $text);
    $text = str_replace ("Ö", "&Ouml;", $text);
    $text = str_replace ("ü", "&uuml;", $text);
    $text = str_replace ("Ü", "&Uuml;", $text);
    $text = str_replace ("ß", "&szlig;", $text);

    ;)

    Beitrag zuletzt geändert: 29.9.2009 9:05:15 von nerdinator
  5. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Danke für die Antworten ! Aber wie mache ich das in mein Script rein?
  6. davy schrieb:
    Danke für die Antworten ! Aber wie mache ich das in mein Script rein?


    Indem Du ein klein wenig nachdenkst und die "Examples" dir mal anguckst.

    http://de.php.net/manual/en/function.str-replace.php
  7. davy schrieb:
    Wie mache ich es, dass die Umlaute (ü,ä,ö usw.) automatisch durch &uuml; &auml; usw. ersetzt werden?



    Na so:

    <?php
    require('sql.php');
    $query = "SELECT * from news ORDER BY datum DESC";
    $do = mysql_query($query) OR DIE("Fehler");
    $old=array("ä","ö","ü","Ä","Ü","Ö");
    $new=array("&auml;","&ouml;","&uuml;","&Auml;","&Uuml;","&Ouml;"); 
    echo "";
    while($row = mysql_fetch_assoc($do))
    {
    echo "<table cellSpacing=\"0\" cellPadding=\"2\" width=\"100%\" align=\"center\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">
    <td width=\"100%\"><b><font size=\"2\" face=\"Verdana\">".str_replace($old,$new,$row[betreff])."</font></b></td>
    <td><font size=\"2\" face=\"Verdana\">".str_replace($old,$new,$row[datum])."</font></td>
    </tr>
    <td colspan=\"2\"><font size=\"2\" face=\"Verdana\">".str_replace($old,$new,$row[nachricht]."</font></td><br>";
    }
    echo "</table>";
    ?>


    Oder halt:

    <?php
    require('sql.php');
    $query = "SELECT * from news ORDER BY datum DESC";
    $do = mysql_query($query) OR DIE("Fehler");
    echo "";
    while($row = mysql_fetch_assoc($do))
    {
    echo "<table cellSpacing=\"0\" cellPadding=\"2\" width=\"100%\" align=\"center\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">
    <td width=\"100%\"><b><font size=\"2\" face=\"Verdana\">".htmlspecialchars($row[betreff])."</font></b></td>
    <td><font size=\"2\" face=\"Verdana\">".htmlspecialchars($row[datum])."</font></td>
    </tr>
    <td colspan=\"2\"><font size=\"2\" face=\"Verdana\">".htmlspecialchars($row[nachricht]."</font></td><br>";
    }
    echo "</table>";
    ?>

  8. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    quest schrieb:
    davy schrieb:
    Wie mache ich es, dass die Umlaute (ü,ä,ö usw.) automatisch durch &uuml; &auml; usw. ersetzt werden?



    Na so:

    <?php
    require('sql.php');
    $query = "SELECT * from news ORDER BY datum DESC";
    $do = mysql_query($query) OR DIE("Fehler");
    $old=array("ä","ö","ü","Ä","Ü","Ö");
    $new=array("&auml;","&ouml;","&uuml;","&Auml;","&Uuml;","&Ouml;"); 
    echo "";
    while($row = mysql_fetch_assoc($do))
    {
    echo "<table cellSpacing=\"0\" cellPadding=\"2\" width=\"100%\" align=\"center\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">
    <td width=\"100%\"><b><font size=\"2\" face=\"Verdana\">".str_replace($old,$new,$row[betreff])."</font></b></td>
    <td><font size=\"2\" face=\"Verdana\">".str_replace($old,$new,$row[datum])."</font></td>
    </tr>
    <td colspan=\"2\"><font size=\"2\" face=\"Verdana\">".str_replace($old,$new,$row[nachricht]."</font></td><br>";
    }
    echo "</table>";
    ?>


    Oder halt:

    <?php
    require('sql.php');
    $query = "SELECT * from news ORDER BY datum DESC";
    $do = mysql_query($query) OR DIE("Fehler");
    echo "";
    while($row = mysql_fetch_assoc($do))
    {
    echo "<table cellSpacing=\"0\" cellPadding=\"2\" width=\"100%\" align=\"center\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">
    <td width=\"100%\"><b><font size=\"2\" face=\"Verdana\">".htmlspecialchars($row[betreff])."</font></b></td>
    <td><font size=\"2\" face=\"Verdana\">".htmlspecialchars($row[datum])."</font></td>
    </tr>
    <td colspan=\"2\"><font size=\"2\" face=\"Verdana\">".htmlspecialchars($row[nachricht]."</font></td><br>";
    }
    echo "</table>";
    ?>




    Danke ! Es funktioniert.

    Mfg

    EDIT: Diese Angaben haben auch Sonderzeichen. Wie geht es, wenn ich

    </tr>
        <tr>
          <td width="25%"><b>17</b></td>
          <td width="25%"><b><?php echo $row[verein17] ?></b></td>
          <td width="25%"></td>
          <td width="25%"><b><?php echo $row[punkte1_17] ?></b></td>
          <td width="25%"><b><?php echo $row[punkte2_17] ?></b></td>
        </tr>


    habe? Ich habe es mit

    <tr>
          <td width="25%"><b>18</b></td>
          <td width="25%"><b><?php echo $row[verein18] ?></b></td>
          <td width="25%"></td>
          <td width="25%"><b><?php echo $row[punkte1_18] ?></b></td>
          <td width="25%"><b><?php echo ".str_replace($old,$new,$row[punkte2_18])." ?></b></td>
        </tr>


    probiert. Ging aber nicht.

    Könnt Ihr mir helfen ?

    Beitrag zuletzt geändert: 29.9.2009 9:34:34 von davy
  9. e********l

    Entweder die von Quest vorgeschlagene Lösung oder dafür sorgen das du Latin Chars auf einer Latin Seite anzeigst und diese als Latin in die DB schreiben und lesen tust. Dann musst du dir keine Gedanken um die HTML Entitäten machen. Oder als UTF8 speichern...
  10. davy schrieb:
    habe? Ich habe es mit

    <tr>
          <td width="25%"><b>18</b></td>
          <td width="25%"><b><?php echo $row[verein18] ?></b></td>
          <td width="25%"></td>
          <td width="25%"><b><?php echo $row[punkte1_18] ?></b></td>
          <td width="25%"><b><?php echo ".str_replace($old,$new,$row[punkte2_18])." ?></b></td>
        </tr>


    probiert. Ging aber nicht.

    Könnt Ihr mir helfen ?


    Wenn du mit str_replace eine Variable mit echo ausgeben willst, darfst du keine Anführungszeichen setzten! Richtig wäre hier also:

    <tr>
          <td width="25%"><b>18</b></td>
          <td width="25%"><b><?php echo $row[verein18] ?></b></td>
          <td width="25%"></td>
          <td width="25%"><b><?php echo $row[punkte1_18] ?></b></td>
          <td width="25%"><b><?php echo str_replace($old,$new,$row[punkte2_18]) ?></b></td>
        </tr>


    Sonst wird Dir die Funktion str_replace ja als Text ausgegeben!


    Beitrag zuletzt geändert: 29.9.2009 10:32:49 von quest
  11. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    quest schrieb:
    davy schrieb:
    habe? Ich habe es mit

    <tr>
          <td width="25%"><b>18</b></td>
          <td width="25%"><b><?php echo $row[verein18] ?></b></td>
          <td width="25%"></td>
          <td width="25%"><b><?php echo $row[punkte1_18] ?></b></td>
          <td width="25%"><b><?php echo ".str_replace($old,$new,$row[punkte2_18])." ?></b></td>
        </tr>


    probiert. Ging aber nicht.

    Könnt Ihr mir helfen ?


    Wenn du mit str_replace eine Variable mit echo ausgeben willst, darfst du keine Anführungszeichen setzten! Richtig wäre hier also:

    <tr>
          <td width="25%"><b>18</b></td>
          <td width="25%"><b><?php echo $row[verein18] ?></b></td>
          <td width="25%"></td>
          <td width="25%"><b><?php echo $row[punkte1_18] ?></b></td>
          <td width="25%"><b><?php echo str_replace($old,$new,$row[punkte2_18]) ?></b></td>
        </tr>


    Sonst wird Dir die Funktion str_replace ja als Text ausgegeben!



    Danke ! Jetzt geht alles !
  12. Moin,

    ich glaube, die Funktion htmlentities() erfüllt den Zweck vollkommen.
    Man muss nicht russische Methoden versuchen und die Zeichen einzeln replacen ;)


    Um deinen Code übersichtlich zu halten und irgendwelche Fehler beim Escapen zu evrmeiden, solltest du lange HTML-Parts nicht unbedingt durch den PHP-Interpreter schleusen, sondern direkt ausgeben.
    Für die einzelnen Variablen, die ausgegeben werden müssen, kannst du dann wieder einen PHP-Part öffnen.



    gruß
    ferdinand24


  13. ferdinand24 schrieb:
    Um deinen Code übersichtlich zu halten und irgendwelche Fehler beim Escapen zu evrmeiden, solltest du lange HTML-Parts nicht unbedingt durch den PHP-Interpreter schleusen, sondern direkt ausgeben.
    Für die einzelnen Variablen, die ausgegeben werden müssen, kannst du dann wieder einen PHP-Part öffnen.

    Schuldigung wenn ich da was übersehen habe, aber das hat er doch gemacht???
  14. yo mey!
    wenn das -> '9:30, 29.9.2009' der letzte stand ist, gibt es noch einiges zu verbessern ;o)

    1) umlaute umzuwandeln ist ein alltäglicher job für deutschsprachige, daher gehört in eine funktion;

    2) 'OR DIE("Fehler");' ist ein php-security-issue! der ofizielle vorschlag lautet:
    if ( $do = @mysql_query ($query) ) {
      // tue was richtiges
    } else {
      exit ("die lage ist ganz ganz böse!");
    }

    3) das innenleben der while-schleife ist 'etwas ungenau', dass ich nicht sage wirr (da siet man's wieder, wie gutmütig browser noch immer sind!):
    a) in der schleife wird jedes mal der '<table ...' anweisung ausgegeben!
    b) die zeile '<td colspan=\"2\"> ...' steht ohne <tr> da!

    4) eine angezeigte seite het einen inhalt. diesen einen inhalt sollte man ein einziges mal - auf einmal - und nicht häppchenweise mit tausend 'echo' oder 'printf' &c. ausgeben. das geht dann so, dass man die inhalte in eine variable kumulieren lässt (siehe unten die variable '$tbl') und am ende des kodes das ganze auf einmal ausgibt.
    warum das so ist? test dazu:
    <?php
    // diese schleife ist ca. 100x langsamer!
    echo microtime();
    for ($i = 0; $i < 1000; $i++) {
      echo "kdjfv sj bosdfbga pruvlis dbjslfdjbsld fjgsjdf b!!<br />";
    }
    echo microtime();
    $tbl = "";
    for ($i = 0; $i < 1000; $i++) {
      $tbl .= "kdjfv sj bosdfbga pruvlis dbjslfdjbsld fjgsjdf b!!<br />";
    }
    echo $tbl;
    echo microtime();
    ?>


    5) letzte bemerkung: lass den ganzen formatierungsmüll aus der tabelle heraus! nur nakte tags. der rest gehört in eine *.css, sonst hast du auf der seite bei 1000 zeilen tonnen weise redundanten müll! (ich überlasse es dir den eigenenmüll zu verbannen ;o)

    daher mein vorschlag sieht so aus.
    <?php
    require ('sql.php');
    $query = "SELECT * from news ORDER BY datum DESC";
    if ( $do = @mysql_query ($query) ) {
    
      // tabelle assemblieren
      $tbl   = "<table cellSpacing=\"0\" cellPadding=\"2\" width=\"100%\" align=\"center\" border=\"1\" style=\"border-collapse:collapse;\" bordercolor=\"#111111\">\n";
    
      while ($row = mysql_fetch_assoc ($do)) {
        $tbl .= "
        <tr>
          <td width=\"100%\"><b><font size=\"2\" face=\"Verdana\">".nmv ($row['betreff'])."</font></b></td>
          <td><font size=\"2\" face=\"Verdana\">{$row['datum']}</font></td>
        </tr>
        <tr>
          <td colspan=\"2\"><font size=\"2\" face=\"Verdana\">".nmv ($row[$i]['nachricht'])."</font></td><br>
        </tr>\n";
      }
    
      // und am ende ausgeben
      echo "$tbl</table>";
    
    } else {
      exit ("ganz ganz ". nmv ("böse!"));
    }
    exit ();
    
    
    // caution!! function is recyclable ;o)
    /**
     *  funtion: No Mutated Vowels = nmv
     */
    function nmv ($t) {
      return str_replace (
        array ("Ä","Ö","Ü","ä","ö","ü","ß"),
        array ("&Auml;","&Ouml;","&Uuml;","&auml;","&ouml;","&uuml;","&szlig"),
        $t
      );
    }
    ?>


    ja also soviel kurz. sonst sind solche sachen (bei mir) eigentlich klassen. aber das ist eine andere frage ;o)
  15. quest schrieb:
    ferdinand24 schrieb:
    Um deinen Code übersichtlich zu halten und irgendwelche Fehler beim Escapen zu evrmeiden, solltest du lange HTML-Parts nicht unbedingt durch den PHP-Interpreter schleusen, sondern direkt ausgeben.
    Für die einzelnen Variablen, die ausgegeben werden müssen, kannst du dann wieder einen PHP-Part öffnen.

    Schuldigung wenn ich da was übersehen habe, aber das hat er doch gemacht???

    Nein, er hat das HTML-Zeugs über echo ausgegeben.
    Das ist bei größeren Dingen teilweise sehr unübersichtlich und fehleranfällig.

    Aber das ist hier nicht Thema...



    gruß
    ferdinand24
  16. Ach da oben. Jetzt ja! Ich hatte nur die letzten Einträge gelesen. Da war ja alles OK.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!