#46335 [Asn->Csd]: DOMText::splitText doesn't handle multibyte characters
| From: | rrichards@php.net | Date: | Mon, 20 Oct 2008 12:47:39 +0000 |
| Subject: | #46335 [Asn->Csd]: DOMText::splitText doesn't handle multibyte characters | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-129872@lists.php.net to get a copy of this message | ||
ID: 46335
Updated by: rrichards@php.net
Reported By: sites at hubmed dot org
-Status: Assigned
+Status: Closed
Bug Type: DOM XML related
Operating System: OS X
PHP Version: 5.2.6
Assigned To: rrichards
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2008-10-17 19:22:18] rrichards@php.net
assigning to self. This is a valid bug.
$node->substringData($start , $length) as a workaround for now.
All of the DOMCharacterData methods are UTF-8 safe.
------------------------------------------------------------------------
[2008-10-17 18:18:59] tularis@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
in PHP < 6, this is expected behaviour. PHP < 6 just isn't
unicode-aware by default. It should work in PHP 6 however. If not, let
us know.
------------------------------------------------------------------------
[2008-10-17 17:10:20] sites at hubmed dot org
Description:
------------
Using the DOMText function splitText() on a text node containing
multibyte characters results in the node being split at the wrong
position.
Reproduce code:
---------------
$text = 'This is an example of using DOM splitText';
$start = 30;
$length = 3;
$dom = new DOMDocument('1.0', 'UTF-8');
$node = $dom->createTextNode($text);
$dom->appendChild($node);
print "Text: $node->textContent\n";
print 'Expected (mb_substr): ' . mb_substr($text, $start, $length,
'UTF-8') . "\n";
$matched = $node->splitText($start);
$matched->splitText($length);
print "Actual (splitText): $matched->textContent\n";
Expected result:
----------------
Text: This is an example of using DOM splitText
Expected (mb_substr): DOM
Actual (splitText): DOM
Actual result:
--------------
Text: This is an example of using DOM splitText
Expected (mb_substr): DOM
Actual (splitText): ing
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=46335&edit=1