【问题标题】:Convert &#038 back to ampersand将 &#038 转换回 & 号
【发布时间】:2013-07-16 00:02:29
【问题描述】:

我正在使用 wordpress,对于我正在开发的网站,我设置了一个自定义帖子类型来列出他们的每项服务和详细信息。

在他们的自定义联系表单上,我正在查询自定义帖子类型以将每个帖子的标题放入选项列表中,以便用户可以选择他们感兴趣的服务。

提交表单时的部分表单逻辑会检查是否填写了所有必填字段,如果没有填写,则会发出警报并要求用户填写所需信息。

我在每个输入中都有一段 php 代码将发布的数据回显到表单中,这样它就不会丢失,我正在尝试对选项下拉菜单执行相同的操作,但我遇到了真正令人沮丧的问题:

任何带有 & 的 wordpress 帖子标题都将 & 的字符代码替换为 &,这很好,它在我的浏览器中显示为 &,但在提交后它变成 & 在发布数据。

当我尝试将每个帖子标题与提交的选择进行比较时,if 语句永远找不到匹配项,因为 & 和 & 不匹配。

我尝试在 wordpress 的标题上使用 htmlspecialchars_decode(),但这不会将 & 解码回和 &。

有没有人知道一个函数来完成这个并解码任何可能弹出的奇怪字符编码?

这是我的 while 循环发生的地方。

while ($custom_post_type->have_posts()) : $custom_post_type->the_post();

//set selected if submission is bouncing back                                       
if($_POST['ftype'] == get_the_title())
{
    $the_selected = ' selected="selected" ';
}
else
{
    $the_selected = '';
}

?>

    <option value="<?php echo get_the_title(); ?>" <?php echo $the_selected; ?>><?php echo get_the_title(); ?></option>

<?php


endwhile;

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    html_entity_decode 应该可以工作。

    echo html_entity_decode('&#038;');
    

    【讨论】:

      【解决方案2】:

      有一个 WordPress 插件可以帮助你:
      https://wordpress.org/plugins/wp-no-format/

      这个插件的想法是让你阻止 WordPress 格式化 您帖子特定部分的 HTML。

      使用非常简单,你只需要写:

      <!-- noformat on -->
      

      在 WordPress 编辑器上,就在您要保护的部分之前,并且 从那时起,WordPress 将不会触及您编写的 HTML 代码。如果 您想恢复必须键入的标准“格式”:

      <!-- noformat off -->
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 2011-01-13
        • 2013-02-01
        相关资源
        最近更新 更多