我想分隔这些字符串
$x = "/user12345 lorem ipsum dolor"; //the 12345 is unique number
分为两部分12345
和lorem 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
$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);
您指定了两个定界符,并且在输出数组中只需要两个元素。
以下模式在字符串的开头或空格处的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)。>>