2017-03-03 42 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);