PHP - 将 ucfirst() 应用于不是 HTML 的第一个字符

PHP - apply ucfirst() to first character that isn't HTML

我正在输出一个由几个不同部分组成的字符串,其中一些部分可能包含也可能不包含一些 HTML。如果我将 ucfirst() 应用于字符串,并且在要显示的文本之前有 HTML,则文本没有得到正确的大写。

$output = $before_text . $text . $after_text;

所以如果我有

$before_text = 'this is the lead into ';
$text = 'the rest of the sentence';
$after_text = '.';

然后 ucfirst() 工作正常并且 $output 将是

This is the lead in to the rest of the sentence.

但是这个

$before_text = '<p>';
$text = '<a href="#">the sentence</a>.';
$after_text = '</p>';

不会做任何事情。所以我想我需要一个函数或正则表达式来找到第一个实际的常规文本,然后将其大写。但是我想不通。

  1. 在 $text 中使用 strip_tags 并保存在 $temp 中:这应该为您提供不是 html.
  2. 的文本
  3. 在 $temp 上应用 ucfirst 并调用它 $temp_ucfirst:这应该给你字符串 upper-cased。
  4. 使用 str_replace 将 $text 中的 $temp 替换为 $temp_ucfirst:这应该将 not-html 文本替换为 upper-cased 文本。