У меня есть функция, которая использует строку:
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)
Спасибо !