Re: [PHP-I18N] problem with utf8_encode

[email protected] (Valkum) Sun, 22 Mar 2009 17:29:55 +0100
Newsgroups php.i18n
Message-ID <[email protected]>
When i follow the way on:

http://bugs.php.net/bugs-generating-backtrace.php



i get this:

    Core was generated by `/usr/bin/php ./test.php'.
    Program terminated with signal 11, Segmentation fault.
    [New process 5913]
    #0  0xb7cecd43 in ?? () from /usr/lib/libpcre.so.3
    (gdb) bt
    #0  0xb7cecd43 in ?? () from /usr/lib/libpcre.so.3
    Cannot access memory at address 0xbf43fb90


So it is a pcre bug?? How can i fix it or when the pcre devs fix the bug?

Greetz Valkum



Moriyoshi Koizumi schrieb:
> Hi,
>
> That appears to be a PCRE's problem.
> Try running it on gdb following the instruction:
> http://bugs.php.net/bugs-generating-backtrace.php
>
> Regards,
> Moriyoshi
>
> 2009/3/22 Valkum <[email protected]>:
>   
>> Hello,
>>
>> i have a big problem.
>>
>> When i try to encode a big string to utf8 i got a core dump
>>
>> her is my code.
>>
>>
>>   <?php
>>   function is_utf8($string) {
>>      // From http://w3.org/International/questions/qa-forms-utf-8.html
>>      return preg_match('%^(?:
>>            [\x09\x0A\x0D\x20-\x7E]            # ASCII
>>          | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
>>          |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
>>          | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
>>          |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
>>          |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
>>          | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
>>          |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
>>      )*$%xs', $string);
>>   }
>>
>>   function output($string)
>>   {
>>       if(!is_utf8($string))
>>         $string = utf8_encode($string);
>>       return addslashes($string);
>>   }
>>
>>   $string = <<<EOH
>>   <div align="justify">
>>   <p>- Im Aufbau -</p>
>>   <h3 id="aventurien">Aventurien</h3>
>>   <div style="border: 1px none ; margin: 5px 5px 5px 10px; float:
>>   right; width: 100px;"><strong>Navigation</strong> <br />
>>   <br />
>>   <a href="#aventurien">Aventurien</a><br />
>>   <a href="#ferdok">Die Stadt Ferdok</a><br />
>>   <a href="#weitere">Weitere Ziele</a></div>
>>   <p>{mosimage} Aventurien ist ein Kontinent der Welt Dere und
>>   Ausgangspunkt f&uuml;r die meisten Abenteuer in der Welt von <em>Das
>>   Schwarze Auge</em>. Von Nord nach S&uuml;d erstreckt sich der
>>   Kontinent ca. &uuml;ber 3000 Meilen, von Ost nach West sind es
>>   immerhin noch 2000 Meilen. Von den Tundren Thorwals bis zur
>>   W&uuml;ste Khom kann man so ziemlich alle Klimazonen in Aventurien
>>   finden.</p>
>>   <p>Im Herzen Aventuriens liegt das Kaiserreich, auch das Mittelreich
>>   genannt, mit seiner Hauptstadt Gareth (rot umrandeter Bereich).  Die
>>   Kultur erinnert entfernt an das mittelalterliche Europa. Die
>>   Handlung Drakensangs wird zu gro&szlig;en Teilen im Mittelreich
>>   spielen, genauer gesagt, in der Umgebung der Stadt Ferdok (s.u.).
>>   Doch auch andere, exotischere Orte sollen Ziel der Reise werden.</p>
>>   <p>Zahlreiche V&ouml;lker und Rassen bewohnen den Kontinent, allen
>>   voran nat&uuml;rlich die Menschenv&ouml;lker, die die Mehrheit der
>>   Bewohner stellen. Unter den Menschen gibt es zahlreiche
>>   unterschiedliche Kulturen, z. B. die wikinger&auml;hnlichen
>>   Thorwaler, das Nomadenvolk der Nivesen oder eben die
>>   Mittell&auml;nder. Daneben gibt es nat&uuml;rlich noch
>>   fantastischere V&ouml;lker wie die Elfen (mit mehrern Untergruppen),
>>   Zwerge, Orks und mehr, eben alles, was eine Fantasywelt zu bieten
>>   hat.</p>
>>   <p>&nbsp;</p>
>>   <h3 id="ferdok">Ferdok</h3>
>>   <p><a target="_blank" href="images/stories/stadtplan_g.jpg">
>>   {mosimage}</a></p>
>>   <p>Ferdok ist eine Grafenstadt im Mittelreich, etwas westlich der
>>   Hauptstadt Gareth, und hat etwa 3000 Einwohner. Sie geh&ouml;rt zu
>>   den &auml;ltesten menschlichen Siedlungen des Kosch. Im Laufe der
>>   Geschichte mu&szlig;te die Stadt jedoch wegen einer &Auml;nderung
>>   des Flu&szlig;laufes des Gro&szlig;en Flu&szlig;es im Jahre 270 BF
>>   verlegt werden, da die Stadt in der Bedeutungslosigkeit zu versinken
>>   drohte. Heute liegt Ferdok wieder direkt an der Einm&uuml;ndung des
>>   Rakula in den Gro&szlig;en Flu&szlig;. Obwohl  die Stadt die
>>   fr&uuml;here Bedeutung l&auml;ngst verloren hat, hat sich Ferdok als
>>   ein wichtiger Handelshafen etabliert (weltber&uuml;hmt: Ferdoker
>>   Bier). Hier werden die Waren von Gareth umgeschlagen, die &uuml;ber
>>   die gro&szlig;e Handelsstra&szlig;e von und nach Ferdok verfrachtet
>>   werden. Ferdok ist damit eines der Tore zum Westen und
>>   erm&ouml;glicht schnelle Reisen in andere Teile der Aventuriens.</p>
>>   <p>Verwaltungstechnisch geh&ouml;rt Ferdok zum F&uuml;rstentum
>>   Kosch, dessen Hauptstadt sie langezeit war. Mittlerweile hat sie
>>   diesen Status jedoch an Angbar verloren. Trotz seiner wichtigen
>>   Rolle als Handelsort sind die Bewohner Ferdoks ein eher biederes
>>   V&ouml;lkchen und h&auml;ngen der Erinnerung an die ruhmreichere
>>   Vergangenheit hinterher. Nachts muss man auf den Stra&szlig;en
>>   neuerdings aufpassen. Zur Handlungszeit verunsichert n&auml;mlich
>>   eine grauenhafte Mordserie die Bewohner Ferdoks und l&auml;sst die
>>   Bev&ouml;lkerung nachts nicht richtig schlafen. Einige Bereiche
>>   sollte man dann grunds&auml;tzlich nicht mehr besuchen, wenn einem
>>   die eigene Gesundheit am Herzen liegt.</p>
>>   <p>Die Stadt wird eine zentrale Anlaufstelle in Drakensang sein,
>>   weswegen sie auch vollst&auml;ndig, nach den Vorgaben des
>>   DSA-Regelwerks in das Spiel eingebaut wird. Der Stadtplan (zum
>>   Vergr&ouml;&szlig;ern anklicken) wurde von Radon Labs dem Regelwerk
>>   direkt entnommen und wird Euch auch f&uuml;r Drakensang gute Dienste
>>   leisten.</p>
>>   <br />
>>   <h3 id="weitere">Weitere Reiseziele des Spiels</h3>
>>   <a target="_blank"
>>   href="images/stories/artikel/map.jpg">{mosimage}</a> Insgesamt soll
>>   es 12 Hauptregionen geben, die jeweils ca. 1 Quadratkilometer
>>   gro&szlig; sind. Alle diese Regionen unterteilen sich nochmal in
>>   &uuml;ber 50 kleinere Gebiete. Bekannt sind neben Ferdok bislang:
>>   <ul>
>>       <li>Avestreu (kleines Dorf s&uuml;d&ouml;stl. von Ferdok)</li>
>>       <li>Dunkelwald (s&uuml;dl. von Ferdok)</li>
>>       <li>Ruine Blutberge (s&uuml;dl. von Ferdok, am Rand des
>>   Dunkelwaldes)</li>
>>       <li>Moorbr&uuml;ck (s&uuml;dl. des Dunkelwaldes)</li>
>>       <li>Burg Grimmzahn (westl. von Moorbr&uuml;ck)</li>
>>       <li>Murolosch (eine Zwergenstadt)</li>
>>       <li>der Berg Drachensang / Drakensang (im Amboss-Gebirge
>>   gelegen)</li>
>>   </ul>
>>   <p>&nbsp;</p>
>>   <p>&nbsp;</p>
>>   <p>Ausf&uuml;hrlichere Infos:</p>
>>   <p><a title="Wiki Aventurica" target="_blank"
>>   href="http://dsa4.de/wiki">Wiki Aventurica </a>(externer Link)<br />
>>   <a href="http://www.eychgras.de/koschwiki/index.php"
>>   target="_blank">KoschWiki</a> (externer Link)</p>
>>   <p>&nbsp;</p>
>>   </div>
>>   EOH;
>>   print_r(output($string));
>>   ?>
>>
>> Please help me. When i delete some code from <ul> to </div> at the end, i
>> get no core dump. only with the full text.
>>
>> What is the problem??
>>
>> Greetz Valkum
>>
>>     
>
>