Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
* mb_str_pad
* @param string $input
* @param int $pad_length
* @param string $pad_string
* @param int $pad_type
* @return string
* @author Kari "Haprog" Sderholm
function mb_str_pad( $input, $pad_length, $pad_string = ' ', $pad_type = STR_PAD_RIGHT)
$diff = strlen( $input ) - mb_strlen( $input );
return str_pad( $input, $pad_length + $diff, $pad_string, $pad_type );
Copy link

naitsirch commented Sep 27, 2012

There is a feature request in the PHP bug tracker for integrating such a function in the core. Please look at and vote for it. Thanks

If you want to provide explicit encoding usage, you can define the function like this:

function mb_str_pad($input, $pad_length, $pad_string = ' ', $pad_type = STR_PAD_RIGHT, $encoding = null)
    if (!$encoding) {
        $diff = strlen($input) - mb_strlen($input);
    else {
        $diff = strlen($input) - mb_strlen($input, $encoding);
    return str_pad($input, $pad_length + $diff, $pad_string, $pad_type);

Copy link

jsebrech commented Dec 25, 2012

If your pad_string is itself multibyte, this still won't give the right result. The tricky part is that str_pad will copy as many bytes out of the pad_string as it needs to reach the pad_length, and will therefore generate corrupt strings. So, basically, you cannot use str_pad unless you first make sure you append too many bytes and then copy the right length out of it via mb_substr.

Copy link

Lewiscowles1986 commented Feb 18, 2015

bad idea as unless the whole string is multi-byte this could lead to issues with string encoding...

Copy link

trialforce commented Dec 15, 2016

Works for me.

Copy link

ksidibe commented Mar 13, 2017

Works for me too...
This is the behavior I expected from str_pad.

Copy link

rquadling commented Oct 7, 2019

Copy link

potenselyanin commented Feb 3, 2021

Copy link

rquadling commented Mar 9, 2021

Copy link

mrtnzagustin commented Jun 29, 2021

Thanks man. 2 hours with this problem.

Copy link

carloscarucce commented May 24, 2022

Thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment