Php 正在从url获取变量,无法回显完整字符串

Php 正在从url获取变量,无法回显完整字符串,php,url,variables,mod-rewrite,get,Php,Url,Variables,Mod Rewrite,Get,我有一个动态url,如下所示 news/categories/s/23-brook-launch-new-zealand “23”是文章id,“brook launch new zealand”是文章标题 当我这样做时: echo $_GET['title']; 它只回答道:“布鲁克”,而不是整根弦 我正在对我的URL使用mod_rewrite,代码如下: RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/

我有一个动态url,如下所示

news/categories/s/23-brook-launch-new-zealand
“23”是文章id,“brook launch new zealand”是文章标题

当我这样做时:

echo $_GET['title'];
它只回答道:“布鲁克”,而不是整根弦

我正在对我的URL使用mod_rewrite,代码如下:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]

如何回显完整字符串?

您没有匹配可能的
-
s:

... ([0-9]+)-([a-zA-Z\-]+) /news/...
                     ^^ You need to add these
因此,整条线将是:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z\-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(([a-zA-Z]+-?)+) /news/view-article.php?category=$1&id=$2&title=$4 [NC]

您的重写规则不支持破折号请尝试此规则:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([^/]*) /news/view-article.php?category=$1&id=$2&title=$3 [NC]

用于匹配标题
([a-zA-Z]+)
的正则表达式只匹配一组leter(a-Z),不包括破折号(
-
)。也许正则表达式的这一部分应该是:
([a-zA-Z]+-?)+)

那么您的重写规则是:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z\-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(([a-zA-Z]+-?)+) /news/view-article.php?category=$1&id=$2&title=$4 [NC]

我想你可能想要:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z0-9-]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
对于您的版本,标题中只允许字母(a-zA-Z),因此正则表达式与破折号不匹配。上面的内容应该与破折号匹配,并且在标题中也允许数字(我想您可能会允许)

您甚至可能只想做:

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-(.+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
…并允许在标题中使用任何字符-您可以很容易地使用这些字符,因为标题是URL的最后一部分