我有public class HomeController : Controller
{
private readonly IDbRepository repository;
public HomeController (IDbRepository repository)
{
this.repository = repository;
}
public ActionResult Index()
{
var posts = this.repository.GetPosts();
//to do : Return something
}
}
这样string
。
最后一个字符是元素的http://domain.sf/app_local.php/foo/bar/33
。他的长度不止一个,所以我不能使用:
id
在这种情况下必须是
substr($dynamicstring, -1);
如何在substr($dynamicstring, -2);
上的“/ bar /”之后获取字符而不取决于长度?
答案 0 :(得分:5)
为确保您能够立即获得分段,请使用正则表达式:
preg_match('~/bar/([^/?&#]+)~', $url, $matches);
echo $matches[1]; // 33
答案 1 :(得分:2)
您可以使用explode('/',$dynamicstring)
将字符串拆分为每个/
之间的字符串数组。然后你可以在结果上使用end()
来得到最后一部分。
$id = end(explode('/',$dynamicstring));
希望这有帮助!
答案 2 :(得分:2)
您可以使用explode
,如下所示:
$id = explode('/',$var);
将元素放在你拥有id的位置。
答案 3 :(得分:0)
试试这个:
$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
答案 4 :(得分:0)
您可以使用正则表达式来执行此操作:
$dynamicstring = "http://domain.sf/app_local.php/foo/bar/33";
if (preg_match('#/([0-9]+)$#', $dynamicstring, $m)) {
echo $m[1];
}
答案 5 :(得分:0)
我在回答之前自己测试了一下。其他答案也是合理的,但这可以根据您的需要进行..
<?php
$url = "http://domain.sf/app_local.php/foo/bar/33";
$id = substr($url, strpos($url, "/bar/") + 5);
echo $id;
答案 6 :(得分:-2)
请找到以下答案。
$str = "http://domain.sf/app_local.php/foo/bar/33";
$splitArr = explode('/',explode('//',$str)[1]);
var_dump($splitArr[count($splitArr)-1]);
希望这有帮助。