在段落制作每句大写的第一个字母?

时间:2017-09-25 06:20:13

标签: php html ucfirst

我从php.net获得此函数,转换大写在句子中变为小写。

function sentence_case($string) {
    $sentences = preg_split('/([.?!]+)/', $string, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    $new_string = '';
    foreach ($sentences as $key => $sentence) {
        $new_string .= ($key & 1) == 0?
            ucfirst(strtolower(trim($sentence))) :
            $sentence.' ';
    }
    return trim($new_string);
}

如果句子不在段落中,一切运作良好。但如果句子在段落中,则开头段落(<p>)或中断(<br>)标记HTML中的第一个字母变为小写。

这是样本:

之前:

<p>Lorem IPSUM is simply dummy text. LOREM ipsum is simply dummy text! wHAt is LOREM IPSUM? Hello lorem ipSUM!</p>

输出:

<p>lorem ipsum is simply dummy text. Lorem ipsum is simply dummy text! What is lorem ipsum? Hello lorem ipsum!</p>

有人可以帮我把段落中的第一个字母变成大写字母吗?

由于

4 个答案:

答案 0 :(得分:0)

您可以轻松地使用CSS

p::first-letter {
    text-transform: uppercase;
}

答案 1 :(得分:0)

你的问题是你在句子中考虑HTML,所以第一个&#34; word&#34;该句子是<P>lorem,而不是Lorem

您可以将正则表达式更改为/([>.?!]+)/,但这样您就可以在&#34; Lorem&#34;之前看到额外空格。因为系统现在看到两个句子,而不是一个。

此外,现在Hello <em>there</em>将被视为四个句子。

这看起来令人不安地像&#34;如何使用正则表达式来解释(X)HTML&#34;?

答案 2 :(得分:0)

试试这个

for event in pygame.event.get():
    if event.type == QUIT:
        pygame.quit()
        sys.exit()

    while event.type == pygame.KEYDOWN:
        right == K_RIGHT
        left == K_LEFT
        if right == 1
            posX += velocidad
        elif lef == 1:
            posX -= velocidad

并调用此函数

function html_ucfirst($s) {
return preg_replace_callback('#^((<(.+?)>)*)(.*?)$#', function ($c) {
        return $c[1].ucfirst(array_pop($c));
 }, $s);
}

这是工作演示:https://ideone.com/fNq3Vo

答案 3 :(得分:-1)

在HTML中

&#13;
&#13;
p.case {
    text-transform: capitalize;
}
&#13;
<p class="case">This is some text and usre.</p>
&#13;
&#13;
&#13;