PHP 子字符串提取。获取第一个“/”或整个字符串之前的字符串

2022-08-30 06:23:18

我正在尝试提取子字符串。我需要一些帮助来用PHP做这件事。

以下是我正在使用的一些示例字符串以及我需要的结果:

home/cat1/subcat2 => home

test/cat2 => test

startpage => startpage

我想把字符串拿到第一个,但如果不存在,就拿到整个字符串。//

我试过了

substr($mystring, 0, strpos($mystring, '/'))

我认为它说 - 获取的位置,然后将子字符串从位置0获取到位置。/

我不知道如何处理没有的情况,而不使声明太大。/

有没有办法在不使PHP语句过于复杂的情况下处理这种情况?


答案 1

最有效的解决方案是 strtok 函数:

strtok($mystring, '/')

注意:如果要拆分多个字符,则结果可能不符合您的期望,例如 返回,因为它被第二个参数中的任何单个字符拆分(在本例中使用)。strtok("somethingtosplit", "to")so

@friek108感谢您的评论中指出这一点。

例如:

$mystring = 'home/cat1/subcat2/';
$first = strtok($mystring, '/');
echo $first; // home

$mystring = 'home';
$first = strtok($mystring, '/');
echo $first; // home

答案 2

使用分解()

$arr = explode("/", $string, 2);
$first = $arr[0];

在这种情况下,我使用参数,以便php不会扫描字符串超过所需的内容。limitexplode


推荐