【发布时间】:2011-09-23 21:17:49
【问题描述】:
我正在 WordPress 中构建一个画廊,我正在尝试抓取我的 URL 的特定部分以回显到 div 的 id 中。
这是我的网址:
http://www.url.com/gallery/truck-gallery-1
我想隔离画廊的 ID,它始终是一个数字(在本例中为 1)。然后我想有一种方法可以在某个地方打印它,也许是以函数的形式。
【问题讨论】:
标签: php wordpress url isolation
我正在 WordPress 中构建一个画廊,我正在尝试抓取我的 URL 的特定部分以回显到 div 的 id 中。
这是我的网址:
http://www.url.com/gallery/truck-gallery-1
我想隔离画廊的 ID,它始终是一个数字(在本例中为 1)。然后我想有一种方法可以在某个地方打印它,也许是以函数的形式。
【问题讨论】:
标签: php wordpress url isolation
使用 $_SERVER['REQUEST_URI'] 变量获取路径(请注意,这与返回类似 http://www.yoursite.com 的主机变量不同。
然后将其分解成一个字符串并返回最后一个字符。
$path = $_SERVER['REQUEST_URI'];
$ID = $path[strlen($path)-1];
当然,您可以进行其他类型的字符串操作来获取字符串的最后一个字符。但这行得通。
【讨论】:
$_SERVER["REQUEST_URI"]。使用 WordPress 时,$_SERVER['SCRIPT_NAME'] 只会给你index.php
您最好使用$_SERVER['REQUEST_URI']。由于它是 URL 中的最后一个字符串,因此您可以使用以下函数:
function getIdFromUrl($url) {
return str_replace('/', '', array_pop(explode('-', $url)));
}
@Kristian 的解决方案只会返回 0-9 之间的数字,但此函数将返回任意长度的 id,只要您的 ID 用 - 符号和最后一个元素分隔即可。
所以,当你打电话时
echo getIdFromUrl($_SERVER['REQUEST_URI']);
它会回显,在你的情况下,1。
【讨论】:
如果 ID 并不总是相同的位数(如果您有任何大于 9 的 ID),那么您将需要类似 preg_match() 或使用字符串函数来修剪最后一个“-”之前的所有内容。 “ 特点。我可能会这样做:
<?php
$parts = parse_url($_SERVER['REQUEST_URI']);
if (preg_match("/truck-gallery-(\d+)/", $parts['path'], $match)) {
$id = $match[1];
} else {
// no ID found! Error handling or recovery here.
}
?>
【讨论】: