Search code examples
phpstringstring-formattingcontao

strtolower and mb_strtolower doesn't work


I have a variable in which a string is stored, which is supplied via an insert tag of the CMS Contao.

category = "{{page::title}}";

The value of the string is at this point "Fitness" with a big "F". I would like to have this string completely in lowercase letters.

I have already tried the following:

// 1
$category = "{{page::title}}";
echo strtolower($category);

// 2
$category = "{{page::title}}";
echo mb_strtolower($category);

// 3
$category = "{{page::title}}";
echo mb_strtolower($category, 'UTF-8');

But none of these approaches work and I still get "Fitness" with a big "F".

What am I doing wrong?


Solution

  • Insert Tags are replaced by Contao before the result is sent to the browser. You are trying to strtolower just the insert tag (which does nothing of course) - not the content it will be replaced by.

    For your example you can use:

    global $objPage;
    echo strtolower($objPage->pageTitle ?: $objPage->title);
    

    or

    echo strtolower($GLOBALS['objPage']->pageTitle ?: $GLOBALS['objPage']->title);
    

    or

    echo strtolower(\Contao\Controller::replaceInsertTags('{{page::title}}'));