Вопрос по whitespace, php, trim – Обрезать лидирующие пробелы с помощью PHP?

5

Кажется, есть ошибка в 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 имеет необязательные начальные символы заголовка страницы - которые выглядят как шевроны - которые должны быть отброшены, когда опция ложна, и они есть, но в них сбрасывается пробел.

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

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

Ваш Ответ

6   ответов
1
ltrim($str)
10
37

<?php echo ltrim(wp_title('')); ?>

Strip all whitespace from either end:

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

Strip all spaces from the left end of the title:

<?php echo ltrim(wp_title(''), ' '); ?>

Remove the first space, even if it's not the first character:

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

Strip only a single space (not newline, not tab) at the beginning:

<?php echo preg_replace('/^ /', '', wp_title('')); ?>

Strip the first character, whatever it is:

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

Из Wordpressдокументация поwp_title, похоже, чтоwp_title показывает сам заголовок, если вы не пройдетеfalse для второго параметра, и в этом случае он возвращает его. Так что постарайтесь:

<?php echo trim(wp_title('', false)); ?>
Пробовал их обоих раньше; они все еще возвращают два ведущих пробела .... обр. markratledge
Вы определенно получите приз за размах и разнообразие, и все они должны работать. Но что-то дурацкое с функцией Wordpress, и у меня все еще есть пробелы. Firebug показывает это как пробел, а не какой-либо символ .... markratledge
Почему бы не использовать PHP для преобразования полученной строки в HEX и посмотреть, какой код символа используется в начале? Или вы всегда можете просто взять substr () и удалить первый символ.
Вторая часть эпопеи посвящена моему первоначальному вопросу! markratledge
Что с картинкой?
0

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

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

1

отделка

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

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

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

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

Похожие вопросы