|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2002-11-02 13:04 UTC] panacode at skynet dot be
 str_replace when used with with arrays, for every element in the search/replace arrays a simple replace in the source string (rather than using an external string) is performed. This causes an unexpected result like if one of the replace values includes a search value it will be replaced in a subsequent replacing action. If this is a feature rather than a bug (which I doubt) please state it in the documentation. An example: $vSearch[] = '@gill'; $vSearch[] = '@doubleyou'; $vReplace[] = '@doubleyou'; $vReplace[] = '@bates'; $sSubject = "@gill is my friend"; $sResult = str_replace($vSearch, $vReplace, $sSubject); echo $sResult; // will output "@bates is not my friend" instead // of "@doubleyou is not my friend" Best regards, Eugen Fernea IT Manager Panacode Software rue de la Station, 1/1 7090 Braine-Le-Comte Belgium E-mail: panacode@skynet.be Phone: +32 067/48 58 94 Mobile: +32 (0)472 95 15 48 Web: http://www.panacode.com PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 09:00:01 2025 UTC | 
Sorry but there is a bug in the str_replace function. Reproduced under 4.2.2 and 4.3.2 function recode_charset($string,$cs_from,$cs_to) { $trans_tbl["ASCII"] = array("&", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?"); $trans_tbl["UNICODE"] = array("&", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ"); $trans_tbl["HTML"] = array("&", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ"); return str_replace($trans_tbl[$cs_from], $trans_tbl[$cs_to], $string); } $string = recode_charset('???????','ASCII','HTML'); will produce ÃãÛûÕõÞ but ÄäÜüÖöß is correct.