从字符串的开头和结尾删除内容(PHP)

时间:2010-10-28 10:02:28

标签: php strip str-replace

我正在尝试从字符串中获取用户ID,例如:

http://www.abcxyz.com/123456789/

显示为123456789,基本上将信息剥离到第一个/并且还删除结束/。我确实在网上看了看,但似乎有很多解决方案,但没有回答开始和结束。

谢谢:)

更新1

链接可以采用两种形式:如上所述的mod_rewrite以及“http://www.abcxyz.com/profile?user_id=123456789”

5 个答案:

答案 0 :(得分:3)

我会使用parse_url()从URL中干净地提取路径组件:

$path = parse_URL("http://www.example.com/123456789/", PHP_URL_PATH);

然后使用explode()将路径拆分为其元素:

$path = trim($path, "/"); // Remove starting and trailing slashes
$path_exploded = explode("/", $path);

然后输出路径的第一个组件:

echo $path_exploded[0]; // Will output 123456789

此方法适用于

等边缘情况
  • http://www.example.com/123456789?test
  • http://www.example.com//123456789
  • www.example.com/123456789/abcdef

甚至

  • /123456789/abcdef

答案 1 :(得分:1)

$string = 'http://www.abcxyz.com/123456789/';
$parts = array_filter(explode('/', $string));
$id = array_pop($parts);

答案 2 :(得分:0)

如果网址中没有其他数字,您也可以

echo filter_var('http://www.abcxyz.com/123456789/', FILTER_SANITIZE_NUMBER_INT);

去掉所有不是数字的东西。

这可能比使用parse_url + parse_str组合更快。

答案 3 :(得分:0)

如果ID始终是URL的最后一个成员

$url="http://www.abcxyz.com/123456789/";
$id=preg_replace(",.*/([0-9]+)/$,","\\1",$url);
echo $id;

答案 4 :(得分:0)

如果您的域名不包含任何数字,您可以使用以下方式处理这两种情况(使用或不使用user_id):

<?php

$string1 = 'http://www.abcxyz.com/123456789/';
$string2 = 'http://www.abcxyz.com/profile?user_id=123456789';

preg_match('/[0-9]+/',$string1,$matches);
print_r($matches[0]);


preg_match('/[0-9]+/',$string2,$matches);
print_r($matches[0]);


?>