PHP - изолировать первую букву от текста - PullRequest
2 голосов
/ 23 января 2011

У меня есть набор статей, в котором я хочу оформить первую букву каждой статьи (с помощью CSS).

статьи обычно начинаются с параграфа, например:

<p> bla bla </p>

Итак, как мне обернуть первую букву из этого текста в тег <<code>span>?

Ответы [ 5 ]

3 голосов
/ 23 января 2011

Если вам не нужно что-то делать чрезвычайно , то есть также : селектор первой буквы CSS .

1 голос
/ 23 января 2011

вы можете добавить диапазон Php, но он может быть не таким чистым $ s = "

la la

";$ strip = trim (strip_tags ($ s));$ t = взорваться ('', $ strip);$ first = $ t [0];

// затем заменим первый символ на диапазон вокруг него $ replace = preg_replace ('/ ^? /', '$ 1', $ first);

// затем заменить первый раз это слово в строке $ s = preg_replace ('/'.$ first.' / ', $ replace, $ s, 1);

echo $ s;

// не проверено

1 голос
/ 23 января 2011
<?php

$str = '<p> bla bla </p>';
$search = '_^<p> *([\w])(.+) *</p>$_i';
$replacement = '<p><span>$1</span>$2</p>';

$new = preg_replace( $search, $replacement, $str );

echo $new."\n";
1 голос
/ 23 января 2011

Вы можете сделать это во всех CSS.

CSS поддерживает «Псевдоэлементы», где вы можете выбрать первую букву / первое слово и отформатировать его иначе, чем в остальной части документа.*http://www.w3schools.com/CSS/CSS_pseudo_elements.asp

Есть таблица совместимости;некоторые из них могут не работать в IE 6

http://kimblim.dk/css-tests/selectors/

0 голосов
/ 11 апреля 2016

Я еще не нашел универсальный метод, но традиционная реализация кода (которая может быть медленнее) работает:

function pos_first_letter($haystack) {
  $ret = false;
  if (!empty($haystack)) {
    $l = strlen($haystack);
    $t = false;
    for ($i=0; $i < $l; $i++) {
      if (!$t && ($haystack[$i] == '<') ) $t = true;
      elseif ($t && ($haystack[$i] == '>')) $t = false;
      elseif (!$t && !ctype_space($haystack[$i])) {
        $ret = $i;
        break;
      }
    }
  }
  return $ret;
}

Затем вызовите:

$i = pos_first_letter( $your_string );
if ($i !== false) {
  $output = substr($s, 0, $i);
  $output .= '<span>' . substr($s, $i, 1) . '</span>';
  $output .= substr($s, $i+1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...