Как заменить подчеркивания пробелами и применить регистр заголовков к строкам имен столбцов с помощью preg_replace_callback ()?

Я не могу получить preg_replace() изменить на preg_replace_callback(),

Пытаясь сделать столбцы таблицы базы данных более удобными для человека, когда я их отображаю, я пытаюсь заменить подчеркивания пробелами, чтобы каждое слово начиналось с заглавной буквы.

function tidyUpColumnName($_colName) {

// Check for blank and quit
if(empty($_colName)) return false;

// Replace underscore and next lowercase letter with space uppercase and Capitalise first letter
$newColName = ucfirst(preg_replace_callback('/_[a-z]/uis', '" ".substr(strtoupper("$0"), 1)', $_colName));
return $newColName;
}

0

Решение

Вы не можете использовать функцию в значении замены с preg_replace() больше. Вот почему preg_replace_callback() используется.

preg_replace_callback() ожидает функцию во втором параметре.

preg_replace_callback('/_([a-z])/ui', function($m) { return " " . strtoupper($m[1]); }, $_colName)

Вам не нужно s модификатор шаблона, потому что вы не используете какой-либо . символы в вашем образце.

Вы можете избежать substr() если вы используете группу захвата и назначить $m[1] в вашей функции замены.


Хм, если я понимаю ваше намерение, вам вообще не нужно регулярное выражение …

Код: (демонстрация)

$string = "what_the_hey_now";
// echo ucwords(str_replace("_", " ", $string));  // not multibyte safe
echo mb_convert_case(str_replace("_", " ", $string), MB_CASE_TITLE, "UTF-8");

Выход:

What The Hey Now
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]