Alexa: preg_split: Segmentation Fault

Hi,

auf meinem Server weigert sich ein PHP-Script, seine Arbeit zu verrichten. Die Ausgabe erfolgt mit UTF8, falls dies was zur Sache tut. PHP Version 5.3.1 (PCRE 7.9 2009-04-11 )
In der apache log taucht ein segmentation fault Fehler auf.

Und das ist das böse Script:
<?php
$text = "gr&uuml;ne B&auml;me";
$pattern    = '/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))/';
var_dump( preg_split('/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))/',html_entity_decode($text, ENT_NOQUOTES),-1, PREG_SPLIT_NO_EMPTY) );
?>

Interessant ist, dass bei $text = "B&auml;me"; alles funktioniert - bei $text = "gr&uuml;ne"; hingegen kommts zum Fehler.

Bitte dringend um Rat weil so ein segfault Fehler hindert das ganze Script...

Danke!

  1. Hi!

    var_dump( preg_split('/((^\p{P}+)|(\p{P}*\s+\p{P}*)|(\p{P}+$))/',html_entity_decode($text, ENT_NOQUOTES),-1, PREG_SPLIT_NO_EMPTY) );

    Die Ursache kann sein, dass du zwar mit \p{..} nach Unicode-Zeichen Ausschau hältst, aber den UTF-8-Modifizierer u nicht verwendest. Mit diesen jedenfalls läuft preg_split() bei mir ohne Probleme, auch wenn dem html_entity_decode() nicht gesagt wird, dass es UTF-8 liefern soll.

    Warum hast du überhaupt mit Entitys zu tun, wenn du UTF-8 verwendest?

    Lo!

    1. Hast natürlich recht, danke! das u muss noch in den regex.
      Warum ich mit den Entities zu kämpfen habe? Die Quellen der Daten liefern leider nicht immer "sauber" im gewünschten Charset. Deswegen muss ich hier auf Nummer sicher gehen.