在PHP之前删除字符串

时间:2017-04-10 18:42:28

标签: php regex

有没有办法删除字符串中最后一个点(。)实例之前的所有内容?

我有以下字符串:

  1. packageName.appName.moduleName.eventName.pageNameX
  2. packageName.appName.moduleName.pageNameY
  3. packageName.appName.pageNameZ
  4. packageName.pageNameA
  5. 我希望:

    1. pageNameX
    2. pageNameY
    3. pageNameZ
    4. pageNameA
    5. 我试过了:

      preg_replace('/^.*.\s*/', '', $theString);
      

      但它不起作用。

3 个答案:

答案 0 :(得分:2)

您可以将这些子字符串与

匹配
$s = "packageName.appName.moduleName.eventName.pageNameX";
preg_match('~[^.]+$~', $s, $match);
echo $match[0];

请参阅regex demoPHP demo

<强>详情:

  • [^.]+ - 除.
  • 以外的1个或多个字符
  • $ - 字符串结束。

答案 1 :(得分:2)

substr($str, strrpos($str, '.')+1);

strrpos()将返回字符串中最后一个字符实例的位置。使用该值+ 1作为substr()中的起始位置,以获取之后的所有内容。

答案 2 :(得分:0)

此函数将使用句点作为分隔符将包路径拆分为组件。然后,它将在分割包路径时使用在数组中检索的组件数返回最后一个句点之后的最后一个组件。

function get_package_name($in_package_path){

  // Split package path into components at the periods.
  $package_path_components = explode('.',$in_package_path);

  // Get the total number of items in components array
  // and subtract 1 to get array index as array indexes start at 0.
  $last_package_path_component_index = count($package_path_components)-1;

// Return the last component of the package path.
  return $package_path_components[$last_package_path_component_index]
}