在PHP中如何获得字符串的结尾?

jbose2ul  于 2023-01-04  发布在  PHP
关注(0)|答案(7)|浏览(166)

子结构PHP

我有一个类似的http://domain.sf/app_local.php/foo/bar/33
最后一个字符是元素的id。它的长度可能不止一个,所以我不能用途:

substr($dynamicstring, -1);

在这种情况下,它必须是:

substr($dynamicstring, -2);

如何在string上获得“/bar/”之后的字符而不依赖于长度?

efzxgjgh

efzxgjgh1#

要确保您获得的是紧接在条形图之后的部分,请使用regular expressions

preg_match('~/bar/([^/?&#]+)~', $url, $matches);
echo $matches[1]; // 33
jtoj6r0c

jtoj6r0c2#

您可以使用explode(),如下所示:

$id = explode('/',$var);

把你有id的元素取出来。

jgovgodb

jgovgodb3#

你可以用explode('/', $dynamicstring)把字符串拆分成一个数组,数组中的字符串位于每个/之间,然后你可以用end()得到最后一部分。

$id = end(explode('/', $dynamicstring));
rks48beu

rks48beu4#

试试这个:

$dynamicstring = 'http://domain.sf/app_local.php/foo/bar/33';

// split your string into an array with /
$parts = explode('/', $dynamicstring);

// move the array pointer to the end
end($parts);

// return the current position/value of the $parts array
$id = current($parts);

// reset the array pointer to the beginning => 0
// if you want to do any further handling
reset($parts);

echo $id;
// $id => 33

测试它yourself here

6bc51xsx

6bc51xsx5#

您可以使用正则表达式来完成此操作:

$dynamicstring = "http://domain.sf/app_local.php/foo/bar/33";
if (preg_match('#/([0-9]+)$#', $dynamicstring, $m)) {
    echo $m[1];
}
6pp0gazn

6pp0gazn6#

在回答之前我自己测试了一下。其他的答案也是合理的,但是这个会根据你的需要工作...

<?php
    $url = "http://domain.sf/app_local.php/foo/bar/33";
    $id = substr($url, strpos($url, "/bar/") + 5);
    echo $id;
xzv2uavs

xzv2uavs7#

请在下面找到答案。

$str = "http://domain.sf/app_local.php/foo/bar/33";
$splitArr = explode('/', explode('//', $str)[1]);
var_dump($splitArr[count($splitArr)-1]);

相关问题