繁体   English   中英

在 php 中制作首字母大写,但 ucfirst(strtolower('string')) 不起作用

[英]make first letter caps in php but ucfirst(strtolower('string')) does not work

我一直在尝试在大写字母中输入字符串的第一个字母,但我无法让它工作。

我尝试了以下代码:

 <?php

$str = $_POST['Papier'];

$f = highlightKeywords('papierwaren', $str);
$s = strtolower($f);
$r = ucfirst($s);

function highlightKeywords($text, $keyword)
{

    $pos = strpos($text, $keyword);

    $wordsAry = explode(" ", $keyword);

    $wordsCount = count($wordsAry);

    for ($i = 0; $i < $wordsCount; $i++) {
        if ($pos === false) {
            $highlighted_text = "<span style='font-weight:700;color:#151313;'>" . strtolower($wordsAry[$i]) . "</span>";
        } else {
            $highlighted_text = "<span style='font-weight:700;color:#151313;'>" . $wordsAry[$i] . "</span>";
        }
        $text = str_ireplace($wordsAry[$i], $highlighted_text, $text);
    }

    return $text;
}

仍然,我没有让它工作,我尝试了以下是否出现空格

$r=ucfirst(trim($s));

仍然没有成功。 这个'papierwaren'文本我是从数据库中得到的,所以请有人帮我解决这个问题。

正如Kaddath所说,您正在将 HTML 添加到您的字符串(<span ...)中。 当您使用 ucfirst 时,它将第一个字符更改为大写,但第一个字符现在是 <,< 的大写是 <。

试试这个代码:

<?php

$str = 'papier';

$f = highlightKeywords('papierwaren', $str);

echo $f;

function highlightKeywords($text, $keyword)
{

    $pos = strpos($text, $keyword);

    $wordsAry = explode(" ", $keyword);

    $wordsCount = count($wordsAry);

    for ($i = 0; $i < $wordsCount; $i++) {
        if ($pos === false) {
            if ($i === 0) {
                $highlighted_text = "<span style='font-weight:700;color:#151313;'>" . ucfirst(strtolower($wordsAry[$i])) . "</span>";
            } else {
                $highlighted_text = "<span style='font-weight:700;color:#151313;'>" . strtolower($wordsAry[$i]) . "</span>";
            }
        } else {
            if ($i === 0) {
                $highlighted_text = "<span style='font-weight:700;color:#151313;'>" . ucfirst($wordsAry[$i]) . "</span>";
            } else {
                $highlighted_text = "<span style='font-weight:700;color:#151313;'>" . $wordsAry[$i] . "</span>";
            }
        }
        $text = str_ireplace($wordsAry[$i], $highlighted_text, $text);
    }

    return $text;
}

在 laravel 这应该有帮助

use Illuminate\Support\Str;

$testString = 'this is a sentence.';

$uppercased = Str::ucfirst($testString);

不要忘记将Illuminate\Support\Str导入 controller。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM