tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Michael Engel
  • 1 Beitrag von Igäl
  • 1 Beitrag von Flex
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
798
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Hi Leute,

    ich kürze mit der substr Funktion einen Text zu Vorschauzwecken, den ich aus einer DB abfrage und ordne das Ergebnis einer Variable zu:

    PHP-Code:
    $news_kfz_vorschautext substr($row_kfz['text_kfz'], 0320); 
    Ich möchte jetzt gerne überprüfen, ob eines der Zeichen in dieser Variable ein & ist, und wenn, dann soll es aus dem String entfernt werden.

    Wie kann ich da vorgehen?

    Warum diese Problematik? In der DB sind die Umlaute mit HTML Umschreibungen wie ä eingetragen und wenn das & Zeichen nun einmal genau das 319 oder das 320 ist, dann steht da eben & oder &a und das gibt einen Fehler weil meine Seite in UTF 8 kodiert ist !

    Ich bedanke mich schonmal für eure Hilfe.

    Gruß
    Carrear
     

  2. #2
    Avatar von Igäl
    Igäl Igäl ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Ort
    Winterthur
    Beiträge
    280
    PHP-Code:
    <?php
    $string 
    "trallali trallala trallalau&";

    if(
    preg_match("#&$#"$string))    {
        
    $string substr($string0, -1);
    }

    echo 
    $string;
    ?>
    Wenn das letzte Zeichen ein & ist, wird es abgeschnitten.
     

  3. #3
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Da aber auch &a &au &aum oder &auml am ende sein kenn, keine Ideale Lösung.

    Eine RegEx Lösung ist auf jeden Fall besser wie:

    PHP-Code:
    $string preg_replace("%(&[a-zA-Z]{0,4})$%s",'',$string); 
    Carrear bedankt sich. 
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
    <?php
    $string 
    "trallali& trallala trallal&aua";

    $substr_len '8';
    $substr substr($string, -$substr_len);
    $pos stripos($substr'&');
    if(
    $pos !== false)    {
        
    $string substr($string0, -($substr_len $pos));
    }
    echo 
    $string;
    ?>
    Keine regulären Ausdrücke und das '&' muss nicht das letzte Zeichen sein, sondern kann unter den letzten substr_len Zeichen sein. Optimal wären dort 6 Zeichen, da eine HTML Entität maximal 8 Zeichen lang ist.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Avatar von Igäl
    Igäl Igäl ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Ort
    Winterthur
    Beiträge
    280
    Das die Funktion beliebig erweiterbar ist, ist mir klar. Aber hab halt versucht n Denkanstoss zu geben

    Ich würd dann aber Michael Engel's Funktion einfach erweitert auf Mindestens 0 und Maximal 8 Chars verwenden.
    Carrear bedankt sich. 

  6. #6
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Stimmt, in diesem Fall ist der RegExp schneller und Michaels Methode wohl besser.
    Carrear bedankt sich. 
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  7. #7
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Hi Leute,

    das sind ja zwei wirklich tolle Lösungen. Ich habe es leider nicht so mit den regulären Ausrücken - ... was sage ich da - ich peile sie überhaupt nicht, aber es funktioniert. Aber mein Dank geht natürlich auch an Michael, der sich Gedanken zur Lösung gemacht hat. Es gibt da eben nur das Problem, dass ich verschieden lange Entities in Gebrauch habe (ä,ü,ö und zusätzlich noch das scharfe s, das ja als Entity 2 Buchstaben mehr hat) und deswegen ist Michaels Lösung einfacher. Ich bedanke mich auf jeden Fall bei euch Dreien. Das gibt ne positive Bewertung

    Gruß
    Carrear
     

  8. #8
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Dann würde ich aber direkt auf alle Entitäten abwagen und davon ist die Längste:
    &plusmn;

    ergibt:

    ±

    Selten verwendet, aber man will ja auf der sicheren Seite sein
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  9. #9
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Wie gesagt, ich habs nicht so mit den regulären Ausdrücken. Ich müsste die also wie ändern?
     

  10. #10
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
    $string preg_replace("%(&[a-zA-Z]{0,8})$%s",'',$string); 
    Die Werte in den geschweiften Klammern stehen für die mögliche Länge des Strings.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  11. #11
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    achso, also nur die Zahl ändern. Ich habe mal noch eine Frage die nur indirekt was hiermit zu tun hat. Welche Zeichen muss ich denn alle als Entities angeben, damit meine Dokumente UTF8 Valide sind? Ich habe alle meine Dokumente von & Zeichen, Ä,Ü,Ö und dem scharfen ß bereinigt, aber der Validator zeigt mit immernoch an, da seien ungültige Zeichen.

    Gruß
    Carrear
     

  12. #12
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Für UTF-8 musst du die Zeichen nicht auf &auml; konvertieren. UTF-8 kann diese Zeichen auch so darstellen.

    Du müsstest im Detail zeigen wo es nicht geht, das man dir helfen kann.
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

Ähnliche Themen

  1. Letztes Zeichen entfernen
    Von dezz im Forum PHP
    Antworten: 3
    Letzter Beitrag: 26.06.10, 01:56
  2. substr() +/- 50 Zeichen bei Trefferwort
    Von think_deluxe im Forum PHP
    Antworten: 2
    Letzter Beitrag: 19.01.08, 20:04
  3. string evt. letztes Zeichen löschen
    Von jaus im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 01.05.06, 14:31
  4. letztes zeichen
    Von fanste im Forum Javascript & Ajax
    Antworten: 10
    Letzter Beitrag: 14.05.05, 16:41
  5. letztes Zeichen eines Formulars
    Von ChrisDongov im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 12.04.05, 18:58