包含空间的结果不会被取出

时间:2016-06-11 04:38:15

标签: php mysql codeigniter-3

这是我用来获取不同类别名称结果的代码。这里,如果类别名称有空格,则结果不会显示,而没有空格的名称将显示。

这是我的代码:

<ul>
    <li><a href="<?php echo base_url();?>clients">View All </a></li>
    <?php foreach($clientdropdown as $row){?>
    <li class="<?php if($active_mn== $row->id) echo 'active'; ?>">
        <a href="<?php echo base_url();?>client/<?php echo $row->category_name;?>">
            <?php echo $row->category_name;?>
            <span></span>
        </a>
    </li>
         <?php }?>

       </ul>

我对使用replace()避免空格的位置感到困惑。

我已经更改了我的代码,请参阅

1 个答案:

答案 0 :(得分:1)

在您编辑的代码中查看了您要执行的操作后,问题不在于$row->category_name无法获取。
这与URL中的空间可能没有编码,因此页面不会正确重定向。

URL编码用“%”后跟两个十六进制数字替换不安全的ASCII字符 空格是不安全的ASCII字符 网址不能包含空格。 URL编码通常用加号(+)或%20替换空格。

urlencode() 将空间转换为+
rawurlencode() 将参数转换为十六进制代码,空间为%20

<ul>
    <li><a href="<?php echo base_url();?>clients">View All </a></li>
    <?php foreach($clientdropdown as $row){?>
    <li class="<?php if($active_mn== $row->id) echo 'active'; ?>">
        <a href="<?php echo base_url();?>client/<?php echo rawurlencode($row->category_name);?>">
            <?php echo $row->category_name;?>
            <span></span>
        </a>
    </li>
         <?php }?>

       </ul>

<强>更新
codeigniter在创建名称包含空格的目录时将空间转换为下划线,因此访问使用类别名称“Hello World”创建的目录的正确路径应为“Hello_World”,对于此特定情况,str_replace(" ", "_", $row->category_name)就是所有需要。