如何修剪和爆炸变量?

问题描述 投票:0回答:3

我想分隔这些字符串

$x = "/user12345 lorem ipsum dolor"; //the 12345 is unique number

分为两部分12345lorem ipsum dolor,然后删除/user。所以结果应该是

$x1 = "12345";
$x2 = "lorem ipsum dolor";

香港专业教育学院尝试了这些代码,但效果不佳

$x = "/user12345 lorem ipsum dolor";
$z = explode("/user", trim($x));
$result = trim($z[1]);

echo $result;
//the output is: 12345 lorem ipsum dolor
php
3个回答
0
投票

[这里有两种可能,一种使用explodeexplode,另一种使用substr

substr

在两种情况下,输出都是

preg_match

preg_match


0
投票
$x = "/user12345 lorem ipsum dolor";

$z = explode(' ', $x, 2);
$z[0] = substr($z[0], 5);
print_r($z);

preg_match('#^/user(\d+)\s+(.*)$#', $x, $z);
array_shift($z);
print_r($z);

0
投票

您指定了两个定界符,并且在输出数组中只需要两个元素。

以下模式在字符串的开头或空格处的Array ( [0] => 12345 [1] => lorem ipsum dolor ) 子字符串上拆分。 Demo on 3v4l.org的第三个参数将输出限制为两个元素,第四个参数排除任何空元素-像$userinfo = "/user12345 lorem ipsum dolor"; preg_match("/\/user(\d+) ([A-z ]+)/", $userinfo, $pat_array); $x1 = $pat_array[1]; $x2 = $pat_array[2]; 之前创建的零长度元素。

代码:(/user

preg_split()

输出:

/user

如果您宁愿进行两个函数调用而不是正则表达式,请在用户编号之前将字符左修剪一下,然后爆炸,限制为2。

代码:(Demo

$x = "/user12345 lorem ipsum dolor";

var_export(
    preg_split('~^/user| ~', $x, 2, PREG_SPLIT_NO_EMPTY)
);

为了进行比较,除非您需要通过“提取”进行“验证”,否则array ( 0 => '12345', 1 => 'lorem ipsum dolor', ) 返回3个元素,而您只需要两个。

代码:(Demo

var_export(
    explode(
        ' ', 
        ltrim($x, 'ersu/'),
        2
    )
);
// same output as previous snippet

由于贪婪的preg_match()将匹配到结尾,所以不需要包括字符串结尾锚(Demo)。>>

© www.soinside.com 2019 - 2024. All rights reserved.