获取URL的ID

时间:2011-05-10 12:55:17

标签: php

假设我们有这样的网址

yoursite.com/39827-key1-key2-key3
yoursite.com/132-key1-key2-key3
yoursite.com/9223455-key1-key2-key3

等等 并且在.htaccess的帮助下,我们可以将所有这些网址指向文件说info.php 用代码

<?=id?>

它应该提供以下ID(关于每个URL)

39827-key1-key2-key3
132-key1-key2-key3
9223455-key1-key2-key3

我现在的问题是,我们只能在第一次( - )之前得到这个号码 让我们说

$id = 39827-key1-key2-key3

我们需要做到

$realid = 39827

所以我想知道是否有任何preg_replace或任何可以删除第一个( - )及其后的所有想法。

例如

For $id = 39827-key1-key2-key3
$realid = (something),$id
Then finally $realid = 39827

它将帮助我创建易于理解的URL并从数据库中检索其数据。

谢谢你,抱歉英语不好。

3 个答案:

答案 0 :(得分:2)

最快的方式(我认为)将是strpossubstr

<?php
$str = "9223455-key1-key2-key3";     
$str = substr($str, 0, strpos($str, '-')); // 9223455

参见benchmarks against explode and preg_match(1,000,000次迭代):

explode + array_shift: 2.7870438098907s
substr + strpos:       1.0809638500214s
preg_match:            1.8446760177612s

答案 1 :(得分:1)

explode()array_shift()

一起使用
$id = "39827-key1-key2-key3";
$realid = array_shift(explode("-", $id));

答案 2 :(得分:0)

可能最快的选择是使用explode()

$id = '39827-key1-key2-key3';
$id_exp = explode('-', $id);
$num_id = $id_exp[0];
// You can get key1, key2, key3 via $id_exp[1], [2], [3], etc.

另一种方法是使用正则表达式,但是如果你知道格式总是如此,那么初始化正则表达式引擎的开销就没那么多了。