Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从文本中分离第一个字母_Php_Html_String - Fatal编程技术网

PHP-从文本中分离第一个字母

PHP-从文本中分离第一个字母,php,html,string,Php,Html,String,我有一套文章,我想在其中设计每篇文章的第一个字母(使用CSS) 文章通常以段落开头,如: <p> bla bla </p> bla bla 那么,我如何将本文中的第一个字母包装在一个标记中呢?您可以在所有CSS中这样做 CSS支持“伪元素”,您可以在其中选择第一个字母/第一个单词,并将其格式化为与文档其他部分不同的格式 有一个兼容性图表;其中一些可能在IE 6中不起作用 除非您需要做一些非常奇特的事情,否则还有一个问题。您可以添加一个Php span,但可能没有那么

我有一套文章,我想在其中设计每篇文章的第一个字母(使用CSS)

文章通常以段落开头,如:

<p> bla bla </p>
bla bla


那么,我如何将本文中的第一个字母包装在一个标记中呢?

您可以在所有CSS中这样做

CSS支持“伪元素”,您可以在其中选择第一个字母/第一个单词,并将其格式化为与文档其他部分不同的格式

有一个兼容性图表;其中一些可能在IE 6中不起作用


除非您需要做一些非常奇特的事情,否则还有一个问题。

您可以添加一个Php span,但可能没有那么干净
$s=“la

”; $strip=trim(strip_标签($s)); $t=爆炸(“”,$strip); $first=$t[0]

//然后将第一个字符替换为其周围的span $replace=preg_replace(“/^?/”、“$1”、$first)

//然后替换字符串中该单词的第一次 $s=preg_replace(“/”.$first.“/”,$replace,$s,1)

echo$s


//未经测试

我还没有找到一种通用的方法,但传统的代码实现(可能较慢)可以工作:

函数位置首字母($haystack){
$ret=假;
如果(!空($haystack)){
$l=strlen($haystack);
$t=假;
对于($i=0;$i<$l;$i++){
如果(!$t&($haystack[$i]='')$t=false;
elseif(!$t&&!ctype_空间($haystack[$i])){
$ret=$i;
打破
}
}
}
返回$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);
}
$i=pos\u首字母($your\u字符串);
如果($i!==false){
$output=substr($s,0,$i);
$output.=''.substr($s,$i,1)。'';
$output.=substr($s,$i+1);
}

它们几乎都在IE7和IE8中工作。IE6有问题,但它有很多问题。
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);
}