【问题标题】:Trim leading white space with PHP?用 PHP 修剪前导空白?
【发布时间】:2023-09-20 13:26:01
【问题描述】:

Wordpress PHP 函数中似乎存在一个错误,它在<?php echo wp_title(''); ?> 生成的页面标题前留下空白我已经通过该函数的 Wordpress 文档和论坛没有任何运气。

我以这种方式使用它<body id="<?php echo wp_title(''); ?>"> 以生成带有页面标题 id 的 HTML 正文标记。

所以我需要做的是去掉那个空白,这样body标签看起来像这样<body id="mypage">而不是这个<body id=" mypage">

多余的空白会破坏我试图用来突出显示活动页面的菜单项的 CSS。当我手动添加没有空格的正确正文标签时,我的 CSS 可以正常工作。

那么我将如何去除空白?谢谢,马克


史诗的第二部分

John,十六进制转储是个好主意;它将空白显示为两个“20”空格。但是所有去除前导空格和空白的解决方案都没有。

还有,<?php ob_start(); $title = wp_title(''); ob_end_clean(); echo $title; ?>

给我< body id ="">

<?php ob_start(); $title = wp_title(''); echo $title; ?>

给我< body id =" mypage">

拼图。 The root of the problem is that wp_title has optional page title leading characters - that look like chevrons - that are supposed to be dropped when the option is false, and they are, but white space gets dumped in.

有核选项吗?


是的,之前都试过了;他们仍然返回两个前导空格... arrgg

【问题讨论】:

    标签: php whitespace trim


    【解决方案1】:

    【讨论】:

      【解决方案2】:
      1. 去掉标题左端的所有空格:

        <?php echo ltrim(wp_title('')); ?>
        
      2. 去除两端的所有空格:

        <?php echo trim(wp_title('')); ?>
        
      3. 去掉标题左端的所有空格:

        <?php echo ltrim(wp_title(''), ' '); ?>
        
      4. 删除第一个空格,即使它不是第一个字符:

        <?php echo str_replace(' ', '', wp_title(''), 1); ?>
        
      5. 在开头只去掉一个空格(不是换行符,不是制表符):

        <?php echo preg_replace('/^ /', '', wp_title('')); ?>
        
      6. 去掉第一个字符,不管它是什么:

        <?php echo substr(wp_title(''), 1); ?>
        

      更新

      从 Wordpress documentation on wp_title 看来,wp_title 似乎会显示标题本身,除非您将 false 传递给第二个参数,在这种情况下它会返回它。所以试试:

      <?php echo trim(wp_title('', false)); ?>
      

      【讨论】:

      • 您肯定会因范围和多样性而获奖,它们都应该有效。但是 Wordpress 功能有些古怪,我仍然有空格。 Firebug 将其显示为空格,而不是任何类型的字符....
      • 史诗的第二部分附在我最初的问题上!
      • 为什么不使用 PHP 将生成的字符串转换为 HEX 并查看开头使用的是什么字符代码?或者你总是可以只取一个 substr() 并剪掉第一个字符。
      • 那张照片让我大笑不止。我只是在期待技术响应,结果遇到了它,让我完全措手不及。
      • 哈哈。有人应该获得奖牌。
      【解决方案3】:
      ltrim($str)
      

      【讨论】:

        【解决方案4】:

        只是在这里添加一些变化:trim

         <body id="<?=trim(wp_title('', false));?>">
        

        【讨论】:

          【解决方案5】:

          感谢您提供此信息!我在同一条船上,因为我需要根据页面标题为 CSS 目的生成页面 ID,并且上述解决方案效果很好。

          我最终遇到了一个额外的障碍,即某些页面的标题带有嵌入的空格,所以我最终编写了这个代码:

          <?php echo str_replace(' ','-',trim(wp_title('',false))); ?>
          

          【讨论】:

            【解决方案6】:

            将此添加到您的functions.php

            add_filter('wp_title', create_function('$a, $b','return str_replace(" $b ","",$a);'), 10, 2);
            

            应该像魅力一样工作

            【讨论】:

              最近更新 更多