假设我们有这样的网址
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并从数据库中检索其数据。
谢谢你,抱歉英语不好。
答案 0 :(得分:2)
<?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.
另一种方法是使用正则表达式,但是如果你知道格式总是如此,那么初始化正则表达式引擎的开销就没那么多了。