substr - letztes zeichen verändern

Carrear

Erfahrenes Mitglied
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:
$news_kfz_vorschautext = substr($row_kfz['text_kfz'], 0, 320);

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
 
PHP:
<?php
$string = "trallali trallala trallalau&";

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

echo $string;
?>

Wenn das letzte Zeichen ein & ist, wird es abgeschnitten.
 
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:
$string = preg_replace("%(&[a-zA-Z]{0,4})$%s",'',$string);
 
PHP:
<?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;
?>
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.
 
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.
 
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
 
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 ;)
 
PHP:
$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.
 
Zurück