首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php类别标题未显示

php类别标题未显示
EN

Stack Overflow用户
提问于 2019-04-23 03:17:03
回答 2查看 83关注 0票数 0

我正在创建PHP类别页面,我的脚本没有显示#标记和+标记,添加了类别标题示例,如我的URL Localhost

http://localhost/zblog/category/1/2/c++和我的其他标题添加了类似以下http://localhost/zblog/category/1/3/php的类别

以下是我的代码

代码语言:javascript
复制
if(isset($_GET['srcid'])) {
$srcid = $_GET['srcid'];
$title= $_GET['title'];
}

类别链接

代码语言:javascript
复制
<span class="post-category"><a href="<?php echo $url; ?>
category/1/<?php echo $row['cat_id']  ?>/
<?php echo $row['cat_title']; ?>" title="View all posts in General" rel="category tag">
<?php echo $row['cat_title']; ?></a></span>

url链接

代码语言:javascript
复制
 <a class="post-source" href="<?php echo $url; ?>
<?php echo 'category/'.rawurlencode($row['cat_id']).'/'.
rawurlencode($row['cat_title']);?>"><h1 class="post-title">
<?php echo $row['cat_title']  ?></h1></a> 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-23 10:25:50

#是不安全的URL字符,因为它在url中有意义。它被称为fragment,与链接锚点一起使用。

+是一个安全的角色,应该没有理由它不能工作。

我建议您尝试以不同的方式解析您的URL。

代码语言:javascript
复制
$url = 'http://localhost/zblog/category/1/2/c++';
$path = parse_url($url, PHP_URL_PATH);
$categories = explode("/", str_replace("/zblog/category/", "", $path));

var_dump($categories);

输出:

代码语言:javascript
复制
array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(3) "c++"
}
票数 0
EN

Stack Overflow用户

发布于 2019-04-23 04:17:35

您正在以错误的方式为PHP准备链接。此外,为了通过URL发送,您需要包含特殊字符。为了让PHP正确地解释URL并从中获取值,您需要这样做:

代码语言:javascript
复制
<span class="post-category"><a href="<?php echo $url; ?>?srcid=<?php echo 'category/1/'.rawurlencode($row['cat_id']).'/';  ?>&title=<?php echo rawurlencode($row['cat_title']); ?>" title="View all posts in General" rel="category tag">

以下是如何创建PHP链接的示例:

代码语言:javascript
复制
http://web_adress/page.php?first_param=value_of_first_param&second_param=value_of_second_param&third_param=value_of_third_param
                          ^                                ^                                  ^
                          Here you start with params       Here you are telling the other one is coming 

然后,您可以使用:

代码语言:javascript
复制
if(isset($_GET['first_param']) {
  //Get all others or whatever
  $second_param = rawurldecode($_GET['second_param']);

  //Your example
  $srcid = rawurldecode($_GET['srcid']);
  $title = rawurldecode($_GET['title']);
}

如果你能根据我在这里创建的例子调整你的代码,它将会工作。为了能够通过URL发送特殊字符,使用rawurlencode对这些字符进行编码,在另一端使用rawurldecode对它们进行解码。我在上面举了一个例子。请注意,如果您使用urlencode +符号将无法通过,并且您将获得空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55799862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档