无法获得最后一部分网址

时间:2014-07-12 19:55:52

标签: php regex url

所以这就是我的网址

http://localhost/search/s.php?search_query=#hashtag

我对此的第一反应是使用$_GET

$search = htmlspecialchars($_GET['search_query'], ENT_QUOTES, 'UTF-8');

所以我最终得不到任何结果,因为我最后有一个#。所以我接着尝试了

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$path = parse_url($url, PHP_URL_PATH);
$pathFragments = explode('/', $path);
$id = end($pathFragments);

我回复$id,然后再次获得s.php 代替。

所以我的问题是,我该如何正确地做到这一点?我看过一些帖子。但似乎没有一个能解决我的问题。

我只是想获得#hashtag

3 个答案:

答案 0 :(得分:0)

您必须通过发出AJAX请求将主题标签发送到后端,最好是jQuery$_SERVER全局变量中的任何网址都不会保留片段标识符(该部分后跟# - 井号)。

var hash = window.location.hash;

$.ajax({ ... });

答案 1 :(得分:0)

使用javascript

var url = 'http://localhost/search/s.php?search_query=#hashtag';

$(form).submit(function(e){
var url = field.val();
   if(url != '' ){
        var hashtag = url.split('#')[1];
       $.post(serverPageUrl, { "hashtag" : '#'+hashtag }, function(data){
            window.location.href = url; //redirect to simulate original get request.
       });
  }
   return false;
});

答案 2 :(得分:0)

尝试使用否定前瞻

(?!=#)#\w+$

Online demo

如果(?!=#)#.*$之后还有任何其他内容,直到行尾,请使用#


或尝试使用分组。从索引1获取匹配的组。

^[^#]*+(.*)$

Online demo

示例代码:

$re = "/(?!=#)#\\w+$/";
$str = "http://localhost/search/s.php?search_query=#hashtag";

preg_match_all($re, $str, $matches);

输出:

#hashtag