Changeset 6593 for CKEditor/trunk


Ignore:
Timestamp:
03/22/11 10:23:18 (3 years ago)
Author:
wwalc
Message:

#6193 PHP: Bad escape sequence \b

Location:
CKEditor/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/trunk/CHANGES.html

    r6591 r6593  
    8989                <li><a href="http://dev.ckeditor.com/ticket/7180">#7180</a> : [IE9] Using Kama skin and RTL layout, dialog buttons were not being displayed correctly.</li> 
    9090                <li><a href="http://dev.ckeditor.com/ticket/7182">#7182</a> : [IE9] Using Office2003/v2 skin and RTL layout, dialog shadows were corrupted.</li> 
     91                <li><a href="http://dev.ckeditor.com/ticket/6913">#6913</a> : Invalid escape sequence (\b) used in PHP integration.</li> 
    9192                <li>Updated the following language files:<ul> 
    9293                        <li><a href="http://dev.ckeditor.com/ticket/7124">#7124</a> : Czech;</li> 
  • CKEditor/trunk/ckeditor_php4.php

    r6352 r6593  
    532532        /** 
    533533         * This little function provides a basic JSON support. 
    534          * http://php.net/manual/en/function.json-encode.php 
    535534         * \private 
    536535         * 
     
    543542                        return 'null'; 
    544543                } 
    545                 if ($val === false) { 
    546                         return 'false'; 
    547                 } 
    548                 if ($val === true) { 
    549                         return 'true'; 
    550                 } 
    551                 if (is_scalar($val)) 
    552                 { 
    553                         if (is_float($val)) 
    554                         { 
    555                                 // Always use "." for floats. 
    556                                 $val = str_replace(",", ".", strval($val)); 
    557                         } 
    558  
    559                         // Use @@ to not use quotes when outputting string value 
    560                         if (strpos($val, '@@') === 0) { 
    561                                 return substr($val, 2); 
    562                         } 
    563                         else { 
    564                                 // All scalars are converted to strings to avoid indeterminism. 
    565                                 // PHP's "1" and 1 are equal for all PHP operators, but 
    566                                 // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend, 
    567                                 // we should get the same result in the JS frontend (string). 
    568                                 // Character replacements for JSON. 
    569                                 static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), 
    570                                 array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')); 
    571  
    572                                 $val = str_replace($jsonReplaces[0], $jsonReplaces[1], $val); 
    573                                 if (strtoupper(substr($val, 0, 9)) == 'CKEDITOR.') { 
    574                                         return $val; 
    575                                 } 
    576  
    577                                 return '"' . $val . '"'; 
    578                         } 
    579                 } 
    580                 $isList = true; 
    581                 for ($i = 0, reset($val); $i < count($val); $i++, next($val)) 
    582                 { 
    583                         if (key($val) !== $i) 
    584                         { 
    585                                 $isList = false; 
    586                                 break; 
    587                         } 
    588                 } 
    589                 $result = array(); 
    590                 if ($isList) 
    591                 { 
    592                         foreach ($val as $v) $result[] = $this->jsEncode($v); 
    593                         return '[ ' . join(', ', $result) . ' ]'; 
    594                 } 
    595                 else 
    596                 { 
    597                         foreach ($val as $k => $v) $result[] = $this->jsEncode($k).': '.$this->jsEncode($v); 
    598                         return '{ ' . join(', ', $result) . ' }'; 
    599                 } 
     544                if (is_bool($val)) { 
     545                        return $val ? 'true' : 'false'; 
     546                } 
     547                if (is_int($val)) { 
     548                        return $val; 
     549                } 
     550                if (is_float($val)) { 
     551                        return str_replace(',', '.', $val); 
     552                } 
     553                if (is_array($val) || is_object($val)) { 
     554                        if (is_array($val) && (array_keys($val) === range(0,count($val)-1))) { 
     555                                return '[' . implode(',', array_map(array($this, 'jsEncode'), $val)) . ']'; 
     556                        } 
     557                        $temp = array(); 
     558                        foreach ($val as $k => $v){ 
     559                                $temp[] = $this->jsEncode("{$k}") . ':' . $this->jsEncode($v); 
     560                        } 
     561                        return '{' . implode(',', $temp) . '}'; 
     562                } 
     563                // String otherwise 
     564                if (strpos($val, '@@') === 0) 
     565                        return substr($val, 2); 
     566                if (strtoupper(substr($val, 0, 9)) == 'CKEDITOR.') 
     567                        return $val; 
     568 
     569                return '"' . str_replace(array("\\", "/", "\n", "\t", "\r", "\x08", "\x0c", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'), $val) . '"'; 
    600570        } 
    601571} 
  • CKEditor/trunk/ckeditor_php5.php

    r6352 r6593  
    523523        /** 
    524524         * This little function provides a basic JSON support. 
    525          * http://php.net/manual/en/function.json-encode.php 
    526525         * 
    527526         * @param mixed $val 
     
    533532                        return 'null'; 
    534533                } 
    535                 if ($val === false) { 
    536                         return 'false'; 
    537                 } 
    538                 if ($val === true) { 
    539                         return 'true'; 
    540                 } 
    541                 if (is_scalar($val)) 
    542                 { 
    543                         if (is_float($val)) 
    544                         { 
    545                                 // Always use "." for floats. 
    546                                 $val = str_replace(",", ".", strval($val)); 
    547                         } 
    548  
    549                         // Use @@ to not use quotes when outputting string value 
    550                         if (strpos($val, '@@') === 0) { 
    551                                 return substr($val, 2); 
    552                         } 
    553                         else { 
    554                                 // All scalars are converted to strings to avoid indeterminism. 
    555                                 // PHP's "1" and 1 are equal for all PHP operators, but 
    556                                 // JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend, 
    557                                 // we should get the same result in the JS frontend (string). 
    558                                 // Character replacements for JSON. 
    559                                 static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), 
    560                                 array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')); 
    561  
    562                                 $val = str_replace($jsonReplaces[0], $jsonReplaces[1], $val); 
    563                                 if (strtoupper(substr($val, 0, 9)) == 'CKEDITOR.') { 
    564                                         return $val; 
    565                                 } 
    566  
    567                                 return '"' . $val . '"'; 
    568                         } 
    569                 } 
    570                 $isList = true; 
    571                 for ($i = 0, reset($val); $i < count($val); $i++, next($val)) 
    572                 { 
    573                         if (key($val) !== $i) 
    574                         { 
    575                                 $isList = false; 
    576                                 break; 
    577                         } 
    578                 } 
    579                 $result = array(); 
    580                 if ($isList) 
    581                 { 
    582                         foreach ($val as $v) $result[] = $this->jsEncode($v); 
    583                         return '[ ' . join(', ', $result) . ' ]'; 
    584                 } 
    585                 else 
    586                 { 
    587                         foreach ($val as $k => $v) $result[] = $this->jsEncode($k).': '.$this->jsEncode($v); 
    588                         return '{ ' . join(', ', $result) . ' }'; 
    589                 } 
     534                if (is_bool($val)) { 
     535                        return $val ? 'true' : 'false'; 
     536                } 
     537                if (is_int($val)) { 
     538                        return $val; 
     539                } 
     540                if (is_float($val)) { 
     541                        return str_replace(',', '.', $val); 
     542                } 
     543                if (is_array($val) || is_object($val)) { 
     544                        if (is_array($val) && (array_keys($val) === range(0,count($val)-1))) { 
     545                                return '[' . implode(',', array_map(array($this, 'jsEncode'), $val)) . ']'; 
     546                        } 
     547                        $temp = array(); 
     548                        foreach ($val as $k => $v){ 
     549                                $temp[] = $this->jsEncode("{$k}") . ':' . $this->jsEncode($v); 
     550                        } 
     551                        return '{' . implode(',', $temp) . '}'; 
     552                } 
     553                // String otherwise 
     554                if (strpos($val, '@@') === 0) 
     555                        return substr($val, 2); 
     556                if (strtoupper(substr($val, 0, 9)) == 'CKEDITOR.') 
     557                        return $val; 
     558 
     559                return '"' . str_replace(array("\\", "/", "\n", "\t", "\r", "\x08", "\x0c", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'), $val) . '"'; 
    590560        } 
    591561} 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy