php:用两个定界符将字符串分成3部分,其中第一个和最后一个“定界符”分别是字母或数字

哈拉季涅尼奇

有什么想法如何将字符串分成3个部分,其中两个“定界符”的第一个和最后一个“定界符”分别是字母或数字?

$str = "%@-H-e-l-l-o-7-9#$%";

会像这样分裂:

$arr=("%@-","H-e-l-l-o-7-9", "#$%");

$str = "Hi$73";

会像这样分裂:

$arr=("","Hi$73", "");

$str = "Беларусь!";

会像这样分裂:

$arr=("","Беларусь", "!");

$str = "!";

会像这样分裂:

$arr=("!","", "");

$str = "";

会像这样分裂:

$arr=("","", "");

$str = "ў55ЎW";

会像这样分裂:

$arr=("","ў55ЎW", "");

这意味着它将返回一个(始终)由3个元素组成的数组,第二个元素的第一个和最后一个符号是数字或拉丁字母/西里尔字母,并且该数组的第一个和last(third)元素绝对不包含数字,并且字母,并且该字符串的连接就是源字符串

谢谢你。

这是完成这项工作的一种方法:

$in = array(
"%@-H-e-l-l-o-7-9#$%",
"Hi$73",
"Беларусь!",
"!",
"",
"ў55ЎW",
'$abc$$$',
"асоба_",
"34.5",
'#_!',
);

foreach($in as $elem) {
    preg_match('/^([^\pL\pN]*)((?=[\pL\pN]|$)[^_]*(?<=[\pL\pN])|^)?([^\pL\pN]*)$/u', $elem, $m);
    printf("'%15s'%s'%10s'\t%s'%10s'\t%s'%10s'%s", "$elem","=> (1): ",$m[1],"(2): ",$m[2], "(3): ",$m[3],"\n");

}

在哪里:

  • \pL 代表任何语言的任何字母
  • \pN 代表任何语言的任何数字

输出:

'%@-H-e-l-l-o-7-9#$%'=> (1): '       %@-'   (2): 'H-e-l-l-o-7-9'    (3): '       #$%'
'          Hi$73'=> (1): '          '   (2): '     Hi$73'   (3): '          '
'Беларусь!'=> (1): '          ' (2): 'Беларусь' (3): '         !'
'              !'=> (1): '         !'   (2): '          '   (3): '          '
'               '=> (1): '          '   (2): '          '   (3): '          '
'        ў55ЎW'=> (1): '          ' (2): '   ў55ЎW' (3): '          '
'        $abc$$$'=> (1): '         $'   (2): '       abc'   (3): '       $$$'
'    асоба_'=> (1): '          '    (2): 'асоба'    (3): '         _'
'           34.5'=> (1): '          '   (2): '      34.5'   (3): '          '
'            #_!'=> (1): '       #_!'   (2): '          '   (3): '          '

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档