获取URL的最后一个字符串

时间:2019-01-29 16:17:20

标签: php

我正在从这样的页面获取数据:

<?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的情况下获得最后一页?

3 个答案:

答案 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)];