У меня есть функция, которая использует строку с заглавной буквы:
function capitalize_sentence($text)
{
$output = preg_replace_callback('/([.!?])\s*(\w)/', function ($matches) {
return strtoupper($matches[1] . ' ' . $matches[2]);
}, ucfirst(strtolower($text)));
return $output;
}
Когда у меня есть такая простая строка:
$text = 'hello. this works !';
var_dump($text);
$text = capitalize_sentence($text);
var_dump($text);die;
это работает хорошо:
string 'hello.this works !' (length=18)
string 'Hello. This works !' (length=19)
Но иногда в моем коде строка выглядит так (с некоторыми тегами):
$text = '<span>hello.</span> this <b>works</b> !';
var_dump($text);
$text = capitalize_sentence($text);
var_dump($text);die;
Что дает мне это (как вы можете видеть, первые слова не пишутся с заглавной буквы...):
string '<span>hello.</span> this <b>works</b> !' (length=39)
string '<span>hello.</span> this <b>works</b> !' (length=39)
Как улучшить мой код? Мне нужно «убежать» <tags>
, не удаляя их, но использовать первое слово с большой буквы, как в первом примере....
Мне нужен такой вывод:
string '<span>Hello.</span> This <b>works</b> !' (length=39)
Спасибо !