@@ -44,7 +44,7 @@ class Mage_Core_Helper_String extends Mage_Core_Helper_Abstract
44
44
public function truncate ($ string , $ length = 80 , $ etc = '... ' , &$ remainder = '' , $ breakWords = true )
45
45
{
46
46
$ remainder = '' ;
47
- if ($ length == 0 ) {
47
+ if (is_null ( $ string ) || $ length == 0 ) {
48
48
return '' ;
49
49
}
50
50
@@ -75,7 +75,7 @@ public function truncate($string, $length = 80, $etc = '...', &$remainder = '',
75
75
*/
76
76
public function strlen ($ string )
77
77
{
78
- return iconv_strlen ($ string , self ::ICONV_CHARSET );
78
+ return is_null ( $ string ) ? 0 : iconv_strlen ($ string , self ::ICONV_CHARSET );
79
79
}
80
80
81
81
/**
@@ -88,6 +88,9 @@ public function strlen($string)
88
88
*/
89
89
public function substr ($ string , $ offset , $ length = null )
90
90
{
91
+ if (is_null ($ string )) {
92
+ return '' ;
93
+ }
91
94
$ string = $ this ->cleanString ($ string );
92
95
if (is_null ($ length )) {
93
96
$ length = $ this ->strlen ($ string ) - $ offset ;
@@ -246,6 +249,9 @@ public function str_split($str, $length = 1, $keepWords = false, $trim = false,
246
249
*/
247
250
public function splitWords ($ str , $ uniqueOnly = false , $ maxWordLength = 0 , $ wordSeparatorRegexp = '\s ' )
248
251
{
252
+ if (is_null ($ str )) {
253
+ return [];
254
+ }
249
255
$ result = [];
250
256
$ split = preg_split ('# ' . $ wordSeparatorRegexp . '#siu ' , $ str , -1 , PREG_SPLIT_NO_EMPTY );
251
257
foreach ($ split as $ word ) {
@@ -269,8 +275,12 @@ public function splitWords($str, $uniqueOnly = false, $maxWordLength = 0, $wordS
269
275
*/
270
276
public function cleanString ($ string )
271
277
{
272
- return '"libiconv" ' == ICONV_IMPL ?
273
- iconv (self ::ICONV_CHARSET , self ::ICONV_CHARSET . '//IGNORE ' , $ string ) : $ string ;
278
+ if (is_null ($ string )) {
279
+ return '' ;
280
+ }
281
+ return '"libiconv" ' == ICONV_IMPL
282
+ ? iconv (self ::ICONV_CHARSET , self ::ICONV_CHARSET . '//IGNORE ' , $ string )
283
+ : $ string ;
274
284
}
275
285
276
286
/**
@@ -279,11 +289,11 @@ public function cleanString($string)
279
289
* @param string $haystack
280
290
* @param string $needle
281
291
* @param int $offset
282
- * @return int
292
+ * @return int|false
283
293
*/
284
- public function strpos ($ haystack , $ needle , $ offset = null )
294
+ public function strpos ($ haystack , $ needle , $ offset = 0 )
285
295
{
286
- return iconv_strpos ($ haystack , $ needle , $ offset , self ::ICONV_CHARSET );
296
+ return iconv_strpos (( string ) $ haystack , ( string ) $ needle , $ offset , self ::ICONV_CHARSET );
287
297
}
288
298
289
299
/**
@@ -315,6 +325,9 @@ public function ksortMultibyte(array &$sort)
315
325
*/
316
326
public function parseQueryStr ($ str )
317
327
{
328
+ if (is_null ($ str )) {
329
+ return [];
330
+ }
318
331
$ argSeparator = '& ' ;
319
332
$ result = [];
320
333
$ partsQueryStr = explode ($ argSeparator , $ str );
@@ -510,6 +523,9 @@ public function uniOrd($c)
510
523
*/
511
524
public function unserialize ($ str )
512
525
{
526
+ if (is_null ($ str )) {
527
+ return null ;
528
+ }
513
529
$ reader = new Unserialize_Reader_ArrValue ('data ' );
514
530
$ prevChar = null ;
515
531
for ($ i = 0 ; $ i < strlen ($ str ); $ i ++) {
0 commit comments