Обрезать ведущие пробелы с помощью PHP?

Кажется, есть ошибка в 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">

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

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


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


person markratledge    schedule 09.07.2009    source источник


Ответы (5)


  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)); ?>
person Community    schedule 09.07.2009
comment
Вы определенно получите приз за размах и разнообразие, и все они должны работать. Но что-то не так с функцией Wordpress, и у меня все еще есть пробелы. Firebug показывает это как пробел, а не какой-либо символ.... - person markratledge; 09.07.2009
comment
Вторая часть эпопеи связана с моим первоначальным вопросом! - person markratledge; 09.07.2009
comment
Почему бы не использовать PHP для преобразования полученной строки в HEX и посмотреть, какой код символа используется в начале? Или вы всегда можете просто взять substr() и обрезать первый символ. - person Chris Thompson; 09.07.2009
comment
Эта картинка заставила меня смеяться намного больше, чем следовало бы. Я просто ожидал технического ответа и столкнулся с ним, и это застало меня врасплох. - person Paolo Bergantino; 09.07.2009
comment
лол. кто-то заслуживает медаль. - person bucabay; 09.07.2009
comment
<body id="<?php trim(wp_title('', false)); ?>"> возвращает <body id=""> И <?php echo substr(wp_title(''), 1); ?> тоже не обрезает начальные пробелы... Очень странно. Но за все это Джон заслуживает 1000 баллов... - person markratledge; 09.07.2009
comment
Мне может понадобиться 2000, если мне нужно установить Wordpress, чтобы ответить на этот вопрос! - person John Kugelman; 09.07.2009
comment
Подождите, вы их путаете. Вам нужно передать false И сделать эхо. Попробуйте <?php echo trim(wp_title('', false)); ?>. - person John Kugelman; 09.07.2009
comment
Боже. Как я это испортил? Не до конца разбираюсь в документах и ​​не смотрю, что я здесь делаю. И сегодня утром встал слишком поздно и в полусне. Это прекрасно работает: <body id="<?php echo trim(wp_title('', false)); ?>"> Действительно ценю это. Вы заслуживаете отпуска с оплатой всех расходов в Bat Cave с неограниченным пробегом на Бэтмобиле.... - person markratledge; 09.07.2009
comment
Начальные пробелы в wp_title функции Wordpress кажутся ошибкой, которая не будет исправлена, поскольку, согласно их системе отслеживания ошибок, она нарушит работу многих тем. Я разместил резолюцию Джона на форумах Wordpress... - person markratledge; 10.07.2009

ltrim()

person Rob    schedule 09.07.2009

Просто для разнообразия: trim

 <body id="<?=trim(wp_title('', false));?>">
person Chris Thompson    schedule 09.07.2009

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

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

<?php echo str_replace(' ','-',trim(wp_title('',false))); ?>
person Tomdkat    schedule 14.07.2010

добавьте это в свой functions.php

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

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

person james    schedule 06.11.2010