Bug #66507 [NEW]: string replace does not work on certain points on the string
| From: | hugo at domibay dot es | Date: | Fri, 17 Jan 2014 08:59:27 +0000 |
| Subject: | Bug #66507 [NEW]: string replace does not work on certain points on the string | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-183859@lists.php.net to get a copy of this message | ||
From: hugo at domibay dot es
Operating system: Centos 6.4
PHP version: 5.4.24
Package: mbstring related
Bug Type: Bug
Bug description:string replace does not work on certain points on the string
Description:
------------
I want to introduce certain chinese text into a database. The SQL Query
requires that all apostrophes are escaped.
Like "'" -> "\\'" .
As I want to process chinese and other languages that don't use latin
characters I opted for a string replace with "mb_ereg_replace()".
I found that "mb_ereg_replace()" could replace latin character names
within the Text and also apostrophes between latin character passages
but was unable to do that when a chinese character was just before the
apostrophes.
Like "ä½äº't Goor Park" -> "ä½äº\\'t Goor Park"
I tried to use this command to achieve this. On many texts it worked,
but on this text it failed.
$srs = mb_ereg_replace("[\']", "\\'", $srs);
Curious was that I can detect the apostrophe with "mb_strpos()", but I
can't replace it.
$iapops = mb_strpos($srs, "'");
Test script:
---------------
This Script shows that some passages can be replaces but that important
apostrophe can't be touched, but yes it can be detected.
$iapops = mb_strpos($srs, "'");
if($iapops !== false)
{
echo "apostrophe found on '$iapops'\n";
echo "test 0: '$srs'\n";
$srs = mb_ereg_replace("(goor)", "[GREEN]", $srs, "i");
echo "test 1: '$srs'\n";
$srs = mb_ereg_replace("[\']", "[apostrophe]", $srs);
echo "test 2: '$srs'\n";
if(mb_strpos($srs, "'") !== false)
echo "replace failed!";
} //if($iapops !== false)
Expected result:
----------------
<p><b>é
åºä½ç½®</b> <br />Hotel - Restaurant Het Ros van
Twenteä½äºde Lutteï¼ä½äº[apostrophe]t [GREEN] ParkåHuize Keizer
Museuméè¿ã 该 4 æçº§é
åºä½äºSandstone Museum of Bad
Bentheimåæ¬ç¹æµ·å§åå ¡å°åºã</p><p><b>客æ¿</b>
<br />
é
åºæ 30
é´å®¢æ¿ï¼æä¾å¹³æ¿çµè§ã客æ¿è®¾æç§äººé³å°ãææä¾ç嫿çµè§å¯æ»¡è¶³æ¨ç娱ä¹éæ±ã便å©è®¾æ½å
æ¬ç´æ¨çµè¯ï¼ä»¥åä¿é©>
ç®±å书æ¡ã</p><p><b>ä¼é²ãSPAãé«ç«¯æå¡è®¾æ½</b>
<br
/>äº«åæ¡æ¿ç度å设æ½ï¼æè
å°è±å欣èµç¾æ¯ã</p><p><b>é¤é¥®</b>
<br
/>æ¨å¯ä»¥å°é¤å
享ç¨ä¸é¡¿ç¾é¤ï¼ä¹å¯ä»¥éæ©é
åºçéæ¶å®¢æ¿æå¡ã欢è¿å
临é
å§/é
å»ï¼ç¹ä¸æ¯å欢ç饮åï¼ç
饮ä¸çªã</p><p><b>å
å¡åå
¶ä»æå¡è®¾æ½</b> <br
/>ç¹è²æå¡/设æ½å
æ¬ä¼è®²å¤ç§è¯è¨çæå¡åãå
Œ
±åºå空è°åå¾ä¹¦é¦ãè¿å®¶é
åºçæ´»å¨è®¾æ½å
æ¬ä¼è®®å®¤>
ãå°ä¼è®®å®¤åå®´ä¼è®¾æ½ãé
åºæä¾å
è´¹å车设æ½ã</p>
Actual result:
--------------
<p><b>é
åºä½ç½®</b> <br />Hotel - Restaurant Het Ros van
Twenteä½äºde Lutteï¼ä½äº't [GREEN] ParkåHuize Keizer
Museuméè¿ã 该 4 æçº§é
åºä½äºSandstone Museum of Bad
Bentheimåæ¬ç¹æµ·å§åå ¡å°åºã</p><p><b>客æ¿</b>
<br />
é
åºæ 30
é´å®¢æ¿ï¼æä¾å¹³æ¿çµè§ã客æ¿è®¾æç§äººé³å°ãææä¾ç嫿çµè§å¯æ»¡è¶³æ¨ç娱ä¹éæ±ã便å©è®¾æ½å
æ¬ç´æ¨çµè¯ï¼ä»¥åä¿é©
ç®±å书æ¡ã</p><p><b>ä¼é²ãSPAãé«ç«¯æå¡è®¾æ½</b>
<br
/>äº«åæ¡æ¿ç度å设æ½ï¼æè
å°è±å欣èµç¾æ¯ã</p><p><b>é¤é¥®</b>
<br
/>æ¨å¯ä»¥å°é¤å
享ç¨ä¸é¡¿ç¾é¤ï¼ä¹å¯ä»¥éæ©é
åºçéæ¶å®¢æ¿æå¡ã欢è¿å
临é
å§/é
å»ï¼ç¹ä¸æ¯å欢ç饮åï¼ç
饮ä¸çªã</p><p><b>å
å¡åå
¶ä»æå¡è®¾æ½</b> <br
/>ç¹è²æå¡/设æ½å
æ¬ä¼è®²å¤ç§è¯è¨çæå¡åãå
Œ
±åºå空è°åå¾ä¹¦é¦ãè¿å®¶é
åºçæ´»å¨è®¾æ½å
æ¬ä¼è®®å®¤>
ãå°ä¼è®®å®¤åå®´ä¼è®¾æ½ãé
åºæä¾å
è´¹å车设æ½ã</p>
--
Edit bug report at https://bugs.php.net/bug.php?id=66507&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=66507&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=66507&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=66507&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=66507&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=66507&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=66507&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=66507&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=66507&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=66507&r=support
Expected behavior: https://bugs.php.net/fix.php?id=66507&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=66507&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=66507&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=66507&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=66507&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=66507&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=66507&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=66507&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=66507&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=66507&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=66507&r=mysqlcfg