我正在从这样的页面获取数据:
<?php $speaker = $page->uri();
$speakerEvents = page('program')->grandchildren()->filter(function($child) use($speaker) {
$speakers = $child->speaker()->toStructure();
return $speakers->findBy('selectspeaker', $speaker);
});
echo $speakerEvents;
?>
其输出为:
"page/page/pageIWant
page/page/pageIWant"
我想要的结果是
pageIWant
pageIWant
我尝试使用的姓氏
echo basename($speakerEvents);
但是我只能得到最后一个pageIWant
如何在不删除第一个URL的情况下获得最后一页?
答案 0 :(得分:2)
使用explode
方法获取网址数组
<?php
$link = $_SERVER['PHP_SELF'];
$link_array = explode('/',$link);
echo $page = end($link_array);
?>
如果您的输出是
page / page / pageIWant
page / page / pageIWant
<?php
$text = "page/page/pageIWant";
$text_arr = explode('/',$text);
echo $page = end($text_arr);
// this will print: pageIWant
?>
答案 1 :(得分:2)
您的字符串具有换行符作为路径分隔符。您需要用\r\n
(CR-LF),\n
或\r
分割行,可以使用preg_split
进行。如果可以确保其中一种格式,也可以使用简单的explode
函数。
foreach (preg_split('~(?:\r?\n|\r)~u', $speakerEvents) as $path)
echo basename($path) , PHP_EOL;
如 AbraCadaver 所述,如果不想处理空行,可以将标志PREG_SPLIT_NO_EMPTY
添加到preg_split
。
如果您在问题中显示的双qoutes是字符串的一部分,则需要进一步修剪字符串:
foreach (preg_split('~(?:\r?\n|\r)~u', trim($speakerEvents, '"')) as $path)
echo basename($path) , PHP_EOL;
答案 2 :(得分:1)
您可以explode字符串,例如
$array = explode('/', 'page/page/pageIWant');
然后您可以像这样使用索引来检索它:
$array[(count($array) - 1)];