JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

提取字符串中的指定字符按顺序组成数组

wys521 2024-11-12 14:28:37 精选教程 18 ℃ 0 评论

// 参数数组的第一个元素是要被操作的字符串,后面是注定的子字符串

// 方法一:

function strToArr( $args=array() ){

if( !$args )

return;

static $endArr = array();

// 把主字符串提取出来,新的args只有指定的字符串

$arg = array_splice( $args, 0, 1 );

// 第一个参数是要被操作的字符串

$mainStr = $arg[0];

$arr = array();

foreach( $args as $k=>$v ){

$n = '_'.$k;

// 获取各指定字符串在主字符串最后出现的位置

${$n} = strrpos( $mainStr, $v );

// 把该指定字符串与对应位置,用数组存储

$arr[${$n}] = $v;

}

// 数组的键是位置,把他们按位置排序

ksort( $arr );

// 指针移到最后一个元素

end( $arr );

// 获取指针当前元素(也就是最后一个)的键值

$key = key( $arr );

// 把最后元素的值装入数组endArr

$endArr[$key] = $arr[ $key ];

// 去掉提取过指定字符串后面的字符串,生成新的字符串

$mainStr = substr( $mainStr, 0, $key );

$crr = $args;

// 把新的主字符串添加到数组的最前面

array_unshift( $crr, $mainStr );

// 如果新的主字符串还有指定字符串,再执行本函数

if( subInStr( $mainStr, $args ) )

strToArr( $crr );

ksort( $endArr );

return $endArr;

}

// 判断字符串里是否存在指定的子字符串

function subInStr( $mStr, $arr ){

foreach( $arr as $v ){

if( strpos( $mStr, $v ) )

return true;

}

}

// 例子:

$a = 'xxx or ppp and aaa and bbb or ccc or eee or www';

$aaa = strToArr( array( $a, 'and', 'or' ) );

print_r( $aaa );

// *************************************************

// 方法二:

function strToArr( $args=array() ){

if( !$args )

return;

// 截取数组的第一个元素

$mainStr = array_splice( $args, 0, 1 );

$mainStr = $mainStr[0];

// 先去掉指定的字符串

$newStr = str_replace( $args, '', $mainStr );

// 按空格拆分成数组

$newArr = explode( ' ', $newStr );

// 把原字符串里除指定字符串外的字符串去掉

$str = str_replace( $newArr, '', $mainStr );

// 按空格拆分成数组

$arr = explode( ' ', $str );

// 去掉空元素

$arr = array_filter( $arr );

return $arr;

}

// 例子:

$fs = strToArr( array( $a, ' or', ' and' ) );

print_r( $fs );

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表