#php #wordpress #string #substr
#php #wordpress #строка #substr
Вопрос:
В WordPress мы используем код <?php the_title(); ?>
для отображения заголовка сообщения. Теперь я хочу отобразить только первую букву заголовка в другом месте. Как я могу это сделать?
Я пробовал это, но это не работает:
<?php $my_title = the_title(); ?>
<?php
$first_char = $my_title[0];
echo $first_char;
?>
Ответ №1:
// Get the first character.
// $firstCharacter = $string[0];
$my_title = get_the_title();
// Get the first character using substr.
$firstCharacter = substr($my_title, 0, 1);
echo $firstCharacter;
the_title()
Функция напечатает его по умолчанию, если для параметра echo не установлено значение false. get_the_title()
получит заголовок.
Комментарии:
1. вы чрезмерно усложняете простую вещь. Не говоря уже о том, что код OP должен работать
2. @MarcinOrlowski функция the_title() напечатает его по умолчанию, если параметру echo не присвоено значение false. get_the_title() извлекет заголовок.
3. Я говорю об использовании
substr()
instrad{x}
и 3 строк кода буквально для oneliner.4. @MarcinOrlowski — Я тоже так думал, пока не понял, что
the_title()
это одна из тех функций WordPress, которая повторяет вывод, а не возвращает его.5. @DebanjanB обновил ответ описанием
Ответ №2:
Вы можете просто сделать это:
<?php echo get_the_title()[0]; ?>
Главное, чтобы заголовок не был пустым. Или:
<?php echo substr(get_the_title(),0,1); ?>
<?php echo preg_replace('/^(w). /','1',get_the_title()); ?>
<?php echo str_split(get_the_title())[0]; ?>
<?php printf("%.1s", get_the_title()); ?> //echo sprintf
и т.д…
Или, если вы хотите усложнить, вы можете использовать «поток», да!:
$f = fopen('php://memory', 'w ');
fputs($f, get_the_title());
rewind($f);
echo fgetc($f);
fclose($f);
LOL — это был самый сложный способ, который я мог придумать, который делает то, что должен, и не содержит никаких ненужных шагов (ну, за исключением fclose
, но в этом случае мы можем восстановить память);
Комментарии:
1. Мне больше всего нравится ваше первое предложение, и оно все равно будет работать с пустым заголовком (в php7 ), если вы сделаете:
get_the_title()[0] ?? ''