note 105161 added to function.str-split

From: Date: Sun, 31 Jul 2011 18:11:27 +0000
Subject: note 105161 added to function.str-split
Groups: php.notes 
Request: Send a blank email to php-notes+get-182030@lists.php.net to get a copy of this message
<?php /* * Работает бодобно стандартной функции trigger_error но в отличие от нее * указывает имя файла и строку вызвывшего функцию в которой этот триггер * был инициирован. */ function trigger_error_callee( $message, $error_type = E_USER_NOTICE ) { set_error_handler( create_function( '$errno, $errstr, $errfile, $errline', ' if ( $errno === E_USER_ERROR || $errno === E_USER_WARNING || $errno === E_USER_NOTICE ) { echo "<br />\n<b>".str_replace( array( E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE ), array( "Error", "Warning", "Notice" ), $errno )."</b>: ".$errstr."<br />\n"; return true; } return false; ' ) ); $dbg = debug_backtrace(); $callee = next( $dbg ); trigger_error( $message.' in <strong>'.$callee['file'].'</strong> on line <strong>'.$callee['line'].'</strong>', $error_type ); restore_error_handler(); } /* * array multi_str_split ( string $string [, mixed $split_length = 1 [, int $end_length = 0 ] ] ) * * Функция работает так же как стандартная str_split но добавлено пару возможностей, * в отличие от str_split в параметр $split_length можно передавать не только число * длину разбивки слова, но и массив состоящий из списка разных размеров, тем самым * функция будет обрезать слово по очередно по списку массива. Если третий параметр * $end_length не задан, или равен нулю то функция будет повторять шаблон указанный * во втором параметре, в пративном случае прогонит шаблон один раз и остатки доделает * по значению указанному в третьем параметре $end_length. */ function multi_str_split( $string, $split_length = 1, $end_length = 0 ) { $split_length = is_array( $split_length ) ? $split_length : array( $split_length ); $result = array(); do { foreach( $split_length as $length ) { if ( is_int( $length ) ) { if ( $length == 0 ) { trigger_error_callee("multi_str_split() [<a href='function.multi-str-split'>function.multi-str-split</a>]: The length of each segment must be greater than zero", E_USER_WARNING ); return false; } else if ( $length > 0 ) { $result[] = substr( $string, 0, $length ); $string = substr( $string, $length ); } else { $result[] = substr( $string, $length ); $string = substr( $string, 0, $length ); } } else { trigger_error_callee("multi_str_split() expects parameter 2 to be long, ".gettype( $length )." given", E_USER_WARNING ); return false; } if ( !$string ) break; } if ( $end_length != 0 ) { $split_length = array( $end_length ); $end_length = 0; } } while( $string ); return $result; } print_r( multi_str_split( "Hello Friend! How are you?", array( 5, 2 ) ) ); /* Array( [0] => Hello [1] => F [2] => riend [3] => ! [4] => How a [5] => re [6] => you? ) */ print_r( multi_str_split( "Hello Friend! How are you?", array( 10, 7 ), 1 ) ); /* Array( [0] => Hello Frie [1] => nd! How [2] => [3] => a [4] => r [5] => e [6] => [7] => y [8] => o [9] => u [10] => ? ) */ print_r( multi_str_split( "Hello Friend! How are you?", array( 5, 2 ), 4 ) ); /* Array( [0] => Hello [1] => F [2] => rien [3] => d! H [4] => ow a [5] => re y [6] => ou? ) */ print_r( multi_str_split( "+12387649873", -4, -3 ) ); /* Array( [0] => 9873 [1] => 764 [2] => 238 [3] => +1 ) */ ?> ---- Server IP: 93.93.91.9 Probable Submitter: 95.55.127.225 ---- Manual Page -- http://www.php.net/manual/en/function.str-split.php Edit -- https://master.php.net/note/edit/105161 Del: integrated -- https://master.php.net/note/delete/105161/integrated Del: useless -- https://master.php.net/note/delete/105161/useless Del: bad code -- https://master.php.net/note/delete/105161/bad+code Del: spam -- https://master.php.net/note/delete/105161/spam Del: non-english -- https://master.php.net/note/delete/105161/non-english Del: in docs -- https://master.php.net/note/delete/105161/in+docs Del: other reasons-- https://master.php.net/note/delete/105161 Reject -- https://master.php.net/note/reject/105161 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#182030) next »