Обрезать лидирующие пробелы с помощью PHP? - PullRequest
6 голосов
/ 09 июля 2009

Кажется, есть ошибка в PHP-функции Wordpress, которая оставляет пробелы перед заголовком страницы, сгенерированной <?php echo wp_title(''); ?> Я безуспешно просматривал документы и форумы Wordpress по этой функции.

Я использую его таким образом <body id="<?php echo wp_title(''); ?>"> для генерации тега HTML-тела с идентификатором заголовка страницы.

Итак, мне нужно убрать этот пробел, чтобы тег body выглядел следующим образом <body id="mypage"> вместо этого <body id=" mypage">

Дополнительный пробел убивает CSS, который я пытаюсь использовать для выделения пунктов меню активной страницы. Когда я вручную добавляю правильный тег body без пробела, мой CSS работает.

Так как бы я убрал пустое пространство? Спасибо, Марк


Часть вторая эпопеи

Джон, шестнадцатеричный дамп был хорошей идеей; это показывает пробел как два "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">

Puzzle. Корень проблемы в том, что wp_title имеет необязательные начальные символы заголовка страницы - которые выглядят как шевроны - которые, как предполагается, отбрасываются, когда параметр имеет значение false, и они есть, но в них сбрасывается пробел.

Есть ли ядерный вариант?


Да, пробовал их обоих раньше; они по-прежнему возвращают два пробела ... arrgg

Ответы [ 6 ]

37 голосов
/ 09 июля 2009
  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 по wp_title видно, что wp_title отображает сам заголовок, если вы не передадите false для второго параметра, и в этом случае он вернет его. Так что попробуйте:

<?php echo trim(wp_title('', false)); ?>
10 голосов
/ 09 июля 2009
1 голос
/ 15 июля 2010

Спасибо за эту информацию! Я был в той же лодке, в которой мне нужно было генерировать идентификаторы страниц для целей CSS на основе заголовка страницы, и вышеупомянутое решение прекрасно работало.

Я столкнулся с дополнительным препятствием в том, что у некоторых страниц есть заголовки со встроенными пробелами, поэтому я закончил кодировать это:

<?php echo str_replace(' ','-',trim(wp_title('',false))); ?>
1 голос
/ 09 июля 2009

Просто добавьте немного разнообразия: Трим

 <body id="<?=trim(wp_title('', false));?>">
1 голос
/ 09 июля 2009
ltrim($str)
0 голосов
/ 06 ноября 2010

добавьте это в ваши functions.php

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

должно работать как шарм

...