3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
798
798
EMPFEHLEN
-
18.10.07 10:49 #1
- 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:
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.PHP-Code:$news_kfz_vorschautext = substr($row_kfz['text_kfz'], 0, 320);
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
-
Wenn das letzte Zeichen ein & ist, wird es abgeschnitten.PHP-Code:
<?php
$string = "trallali trallala trallalau&";
if(preg_match("#&$#", $string)) {
$string = substr($string, 0, -1);
}
echo $string;
?>
-
Da aber auch &a &au &aum oder ä 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);
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
-
18.10.07 11:21 #4Keine 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.PHP-Code:
<?php
$string = "trallali& trallala trallal&aua";
$substr_len = '8';
$substr = substr($string, -$substr_len);
$pos = stripos($substr, '&');
if($pos !== false) {
$string = substr($string, 0, -($substr_len - $pos));
}
echo $string;
?>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"
-
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.
-
18.10.07 11:47 #6
Stimmt, in diesem Fall ist der RegExp schneller und Michaels Methode wohl besser.
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"
-
18.10.07 17:33 #7
- 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
-
18.10.07 17:59 #8
Dann würde ich aber direkt auf alle Entitäten abwagen und davon ist die Längste:
±
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"
-
18.10.07 18:04 #9
- 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?
-
18.10.07 18:07 #10Die Werte in den geschweiften Klammern stehen für die mögliche Länge des Strings.PHP-Code:
$string = preg_replace("%(&[a-zA-Z]{0,8})$%s",'',$string);
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"
-
18.10.07 18:15 #11
- 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
-
Für UTF-8 musst du die Zeichen nicht auf ä 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
-
Letztes Zeichen entfernen
Von dezz im Forum PHPAntworten: 3Letzter Beitrag: 26.06.10, 01:56 -
substr() +/- 50 Zeichen bei Trefferwort
Von think_deluxe im Forum PHPAntworten: 2Letzter Beitrag: 19.01.08, 20:04 -
string evt. letztes Zeichen löschen
Von jaus im Forum C/C++Antworten: 7Letzter Beitrag: 01.05.06, 14:31 -
letztes zeichen
Von fanste im Forum Javascript & AjaxAntworten: 10Letzter Beitrag: 14.05.05, 16:41 -
letztes Zeichen eines Formulars
Von ChrisDongov im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 12.04.05, 18:58





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren