我有一组文章,其中我想要为每篇文章的第一个字母设置样式(使用CSS)。
文章通常以paragrah开头,如:
<p> bla bla </p>
那么如何在&lt; span>
标记中包装此文本的第一个字母?
答案 0 :(得分:3)
除非你需要做一些极其幻想,否则还有:first-letter CSS selector。
答案 1 :(得分:1)
您可以在所有CSS中执行此操作。
CSS支持“Pseudo-Elements”,您可以在其中选择第一个字母/第一个单词,并将其格式化为与文档的其余部分不同。
http://www.w3schools.com/CSS/CSS_pseudo_elements.asp
有兼容性图表;其中一些可能在IE 6中不起作用
答案 2 :(得分:1)
<?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";
答案 3 :(得分:1)
你可以添加一个Php范围但可能不那么干净 $ s =“
la la
”; $ strip = trim(strip_tags($ s)); $ t = explode('',$ strip); $ first = $ t [0];
//然后用围绕它的span替换第一个字符 $ replace = preg_replace('/ ^?/','$ 1',$ first);
//然后替换字符串中该单词的第一次 $ s = preg_replace('/'。$ first。'/',$ replace,$ s,1);
echo $ s;
//未经测试
答案 4 :(得分:0)
我还没有找到一种多功能的方法,但是传统的代码实现(可能会更慢)有效:
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);
}