2014-10-29 62 views
0

我有一個類型的HTML內容:大寫第一個字的HTML格式的文本

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

我想它格式化爲:使用PHP(大寫首字母保持HTML標籤完好)

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

。我不想用

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

如果我嘗試使用strip_tags然後用ucfirst,它不能保持<em>標籤軌道。

+0

爲什麼你不希望使用的CSS規則? – 2014-10-29 09:41:03

+0

嘗試php的'strtoupper()'函數。 [tstrtoupper](http://php.net/manual/en/function.strtoupper.php) – Azrael 2014-10-29 09:41:16

+0

@ Arif_suhail_123:我不確定,對CSS樣式的支持是什麼。它可能不包括所有瀏覽器和電話。 – u134211 2014-10-29 09:44:05

回答

0

The :: first-letter選擇器用於將樣式添加到指定選擇器的第一個字母。

注:以下屬性可以與::第一字母的使用:

  1. 字體屬性
  2. 顏色屬性
  3. 背景屬性
  4. 邊距屬性
  5. padding屬性
  6. 邊境屬性
  7. 文字裝飾
  8. 垂直對齊(僅當浮動是 '無')
  9. text-transform
  10. 的line-height
  11. 浮動
  12. 明確

我想如果沒有text-transform你不能這樣做.. ...

因此請儘量使用此代碼

em { 
text-transform:initial; 
} 
+0

@ Arif_suhail_123我已經更新了答案 – 2014-10-29 10:20:51

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); 
?> 
1
function capsfirst_sentence($string) {return empty($string) ? '' : preg_replace('/\b(\w)/e', 'strtoupper("$1")', $string);} 

這是在PHP如果可以幫助你

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); 
+0

包括一些解釋你的代碼。只有代碼答案被認爲是低質量的。 – Rahul 2014-10-29 13:12:17

相關問題