所以这就是我的网址
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
。
答案 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+$
如果(?!=#)#.*$
之后还有任何其他内容,直到行尾,请使用#
。
或尝试使用分组。从索引1获取匹配的组。
^[^#]*+(.*)$
示例代码:
$re = "/(?!=#)#\\w+$/";
$str = "http://localhost/search/s.php?search_query=#hashtag";
preg_match_all($re, $str, $matches);
输出:
#hashtag