大写HTML格式文本中的第一个单词

时间:2014-10-29 09:39:30

标签: php html

我的HTML内容类型为:

<em>this is some</em> dummy text

我想将其格式化为:(首字母大写,保持HTML标记完好无损)

<em>This is some</em> dummy text

使用PHP。我不想使用

:div:first-letter {
    text-transform: uppercase;
}

如果我尝试使用strip_tags然后使用ucfirst,则无法跟踪<em>代码。

4 个答案:

答案 0 :(得分:1)

function capsfirst_sentence($string) {return empty($string) ? '' : preg_replace('/\b(\w)/e', 'strtoupper("$1")', $string);}   

这是在PHP如果帮助你

答案 1 :(得分:0)

:: first-letter选择器用于将样式添加到指定选择器的第一个字母。

注意:以下属性可以与:: first-letter:

一起使用
  1. 字体属性
  2. 颜色属性
  3. 背景属性
  4. 保证金属性
  5. 填充属性
  6. 边境属性
  7. 文字修饰
  8. vertical-align(仅当float为&#39; none&#39;)
  9. text-transform
  10. 行高
  11. 明确
  12. 我认为没有text-transform你就不能这样做.....

    所以尝试使用此代码

    em {
    text-transform:initial;
    }
    

答案 2 :(得分:0)

我敢打赌,有更好的方法来实现这一目标。但我认为这个片段可能会有所帮助。它遍历字符串并忽略前缀标签。

<?php
  $str    = "<foo>string</foo> to loop through";
  $strlen = strlen($str);
  $inTag  = false;
  for( $i = 0; $i < $strlen; $i++ ) {
    $char = substr( $str, $i, 1 );
    if ($inTag) {
      if (strcmp($char, ">") == 0) {
        $inTag = false;
      }
      continue;
    }

    if (strcmp($char, "<") == 0) {
      $inTag = true;
      continue;
    }

    substr_replace($str, strtoupper($char), $i, 1);
    break;
  }
  echo($str);
?>

答案 3 :(得分:0)

$mystring1 = "<em>this is some</em> dummy text";
$pos1 = stripos($mystring1, '>');
$rest = substr($mystring1, $pos1+1, 1);
$new  = ucfirst($rest);

echo substr_replace($mystring1, $new, $pos1+1, 1);