note 105161 deleted from function.str-split by danbrown
| From: | danbrown@php.net | Date: | Mon, 01 Aug 2011 13:48:09 +0000 |
| Subject: | note 105161 deleted from function.str-split by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-182051@lists.php.net to get a copy of this message | ||
Note Submitter: devote
----
<?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
)
*/
?>