/**
* Returns a trimmed string with the first letter of each word capitalized.
* Also accepts an array, $ignore, allowing you to list words not to be
* capitalized.
*
* @param array $ignore An array of words not to capitalize
* @return Stringy Object with a titleized $str
*/
public function titleize($ignore = null)
{
$stringy = static::create($this->trim(), $this->encoding);
$encoding = $this->encoding;
$stringy->str = preg_replace_callback('/([\\S]+)/u', function ($match) use($encoding, $ignore) {
if ($ignore && in_array($match[0], $ignore)) {
return $match[0];
} else {
$stringy = new Stringy($match[0], $encoding);
return (string) $stringy->toLowerCase()->upperCaseFirst();
}
}, $stringy->str);
return $stringy;
}