Bug #66507 [NEW]: string replace does not work on certain points on the string

From: 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

« previous php.bugs (#183859) next »