Как может быть оформлено последнее слово элемента?

#css #wordpress

#css #wordpress

Вопрос:

Учитывая динамически загружаемый заголовок (с использованием PHP / WordPress), существует ли чистый CSS-метод оформления последнего слова? Например:

 <h1 class='featured'> This is my page title</h1>
  

Становится

 <h1 class='featured'> This is my page <span id="finalWord">title</span></h1>
  

Если использование CSS нецелесообразно, является ли расширение содержимого <h1> тега предлагаемым способом сделать это?

Комментарии:

1. при генерации на стороне сервера будет легко узнать последнее слово и перенести его..

2. @Kobe: безусловно, только я не уверен, что это обычно считается «наилучшей практикой», и также хотел бы узнать об альтернативах.

Ответ №1:

AFAIK, в CSS нет :last-word псевдокласса (хотя это было бы круто). Вы могли бы использовать JavaScript для чего-то подобного, но если у вас есть доступ к <h1> стороне сервера, я бы сделал это с помощью PHP. Это будет частью исходного кода и, вероятно, проще.

Простым алгоритмом было бы найти последний пробел в строке с помощью strrpos() и использовать substr(), чтобы собрать его обратно, завернув в <span> .

Ответ №2:

Я думаю, действительно грубым способом было бы создать способ для всех слов и поместить его в PHP array . Затем echo все значения, и если оно последнее, то ставьте <span id="finalWord"> перед и </span> после.

ПРИМЕР:

Шаг 1: Создайте массив

 $your_text  = "Your text goes here";
$pieces = explode(" ", $your_text);
  

Теперь у вас есть все ваши данные в виде массива. Каждое слово находится в своем объекте.

 echo "<h1 class='featured'>";

$the_count = count($pieces);

foreach ($your_text as $i => $value) {
    $i = $i   1;
    if ($i == $the_count) { echo "<span id='finalWord'>"; }
    echo $value;
    if ($i == $the_count) { echo "</span>"; }
}

echo "</h1>";
  

Итак, в основном, что делает этот код, это подсчитывает, сколько объектов в вашем массиве, и проверяет, является ли отображаемый объект последним. Если это так, он присвоит ему правильный идентификатор.

Я только что очень быстро набрал этот код, поэтому могут быть некоторые ошибки.

Коултон

Комментарии:

1. strrpos и substr_replace будут намного быстрее. Или даже preg_replace!

Ответ №3:

существует ли чистый CSS-метод оформления последнего слова

Такого метода в принципе нет. CSS не может изменять DOM.

Возьмите текст элемента dom, найдите последнее слово, используя ваши собственные критерии для «слова», оберните его в span и задайте innerHTML по результату.

Комментарии:

1. Тогда не псевдокласс, а псевдоэлемент. Но в любом случае ничего подобного. Причина проста: не существует общей концепции такой сущности, как ‘word’.

2. Спасибо за информацию о CSS, я смутно надеялся, что будет псевдокласс типа:last-child, о котором я не слышал ^_^;;

3. извините за это, говоря, что word изначально был из brain shuffle

Ответ №4:

Извините за продолжение древнего поста, это тот, который появился в моих поисковых системах Google для «обернуть последнее слово в строку с тегом span с помощью php», поэтому я решил, что именно сюда я бы поместил решение, которое я придумал.

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

 function wrap_last($string, $wrap_start = '<span class="font-bold">', $wrap_finish = '</span>') {
    $string_array = explode(' ', $string);
    $count = count($string_array);
    $new_array = array();
    foreach ($string_array as $i => $value) {
        $i = $i   1;
        $array_part = '';
        if ($i == $count) {
             $array_part .= $wrap_start;
         }
         $array_part .= $value;
         if ($i == $count) {
             $array_part .= $wrap_finish;
        }
        $new_array[] = $array_part;
    }
    $new_string = implode(' ', $new_array);
    return $new_string;
}