1. strval преобразует переменную $string к строковому типу
2. trim - т.к. второй параметр не задан, удаляет...
" " (ASCII 32 (0x20)), обычный пробел.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
из начала и конца строки
3. preg_replace ищет в оставшейся строке символы
\x09 - табуляция
\x0A - перевод строки
\x0B - вертикальный таб
\x0D - возврат каретки
и заменяет их на пробелы.
4. внешний preg_replace - ищет два и более пробелов подряд и заменяет их на одиночный пробел.
Назначение соли и параметра $size надо искать не в реализации функции, а в контексте её применения по коду.