2017-03-03 25 views
-1

替換每一行的第一個下套管字符我嘗試使用下面的PHP由大寫

$string= 'hello world<br>this is newline<br><br>another line'; 
echo $string.'<hr><br>'; 
echo preg_replace_callback('/^[a-zA-Z0-9]/m', function($m) { 
    return strtoupper($m[0]); 
}, $string); 

輸出:

Hello world 
this is newline 

another line 

我需要改變單詞的第一個字母「這個」和「另一個」。所以輸出成爲這樣:

Hello world 
This is newline 

Another line 

謝謝。

+3

''
沒有任何東西,除了瀏覽器/應用正在呈現HTML新線。你可以嘗試'/(^ |
)'或將它們轉換爲新行。另外一個'.'可能比一個字符類更容易,除非你只想大寫'a-z'(如果是這種情況,可以將字符類修剪成'[a-z]')。 – chris85

+2

爲什麼包括'A-Z'和'0-9'?他們的大衣櫃是什麼? – AbraCadaver

+1

您可以將您的正則表達式更改爲['(?:^ | <[bh]r>)\ s * \ K [az]'](https://www.regex101.com/r/Xxfnub/1)(請參閱regex 101的解釋) 。這是[eval.in中的PHP演示](https://eval.in/748045)。 –

回答

1

這裏是你如何能達到你想要的東西:

$string= 'hello world<br>this is newline<br><br>another line<hr><br>'; 

$parts = preg_split("/<br>|<hr>/", $string); // split string by either <br> or <hr> 
$parts = array_filter($parts); // clean array from empty values 
$parts = array_map('ucfirst',$parts); // array of lines with first letter capitalized 

echo $partString = implode("<br>",$parts);