preg_match Problem!!

drella

Mitglied
guten morgen.

ich habe eine function, die einen text kürzt:

PHP:
function shortText($text, $anzahl) { 
   preg_match("/(.{0,$anzahl}\b)/s", $text, $kurz); 
   if($anzahl < strlen($text)){
      return $kurz[0].' ...';
   }else{
      return $kurz[0];
   }
}

funkioniert auch alles wunderbar.

wenn jetzt aber ein ausrufezeichen ! am ende steht, wird dieses immer abgeschnitten!?
wieso?

danke für jeden tipp!!
andré
 
drella hat gesagt.:

\b steht für Wortgrenze.

Gemeint ist damit dass wenn das Zeichen vor dem \b einem \w entspricht(also Buchstaben, Ziffern, Unterstrich)...das nachfolgende Zeichen die Wortgrenze ist(umgekehrt natürlich auch).

Der markante Unterschied des Ausdrucks \b zu anderen Ausdrücken für Zeichen und Zeichenklassen ist jedoch, dass \b zwar die Wortgrenze darstelllt, das Zeichen, welches für diese Wortgrenze steht (also bei dir das !) jedoch nicht weiter betrachtet.... es wird schlicht nicht als Referenz gemerkt, wodurch es abgeschnitten wird.
 
Zurück