Регулярное выражение для преобразования строкового верхнего регистра в нижний регистр в php

Вот моя проблема

В одном файле PHP продемонстрируйте регулярное выражение, чтобы преобразовать "123 Tree Street, Connecticut" в "123_tree_street_connecticut" .

Я успешно заменил пробелы и запятую _ , но не смог изменить регистр символов, используя регулярное выражение в php.

что я сделал

 <?php echo preg_replace('/(,\s|\s)/', '_', '123 Tree Street, Connecticut'); ?> 

Он заменяет пробелы и запятые _ но не может изменить его.

Может ли кто-нибудь объяснить мне, как это делается, используя только PHP и регулярное выражение.

Благодарю.

Поскольку замена регулярного выражения будет использовать strtolower() , я не вижу причин не просто делать все это с помощью простых строковых функций:

 <?php $str = '123 Tree Street, Connecticut'; $str = strtolower(str_replace(array(', ', ' '), '_', $str)); print_r($str); ?> 

Если strtolower() не разрешен, вы можете выполнить сдвиг в зависимости от расстояния между таблицами символов между буквами верхнего и нижнего регистра. Это не очень, но, похоже, это работает (в данном конкретном случае):

 <?php function shiftToLower($char) { $ord = ord($char); return $ord < 65 || $ord > 90 ? '_' : chr($ord + 32); // 65 = A, 90 = Z } $str = '123 Tree Street, Connecticut'; $str = preg_replace('/([, ]+|[AZ])/e', "shiftToLower('\\1')", $str); print_r($str); ?> 

Вместо этого используйте функцию strtolower .

Вход:

 <?php // either use this // echo str_replace(',', '', str_replace(' ', '_', strtolower("123 Tree Street, Connecticut"))); echo "\n"; // or use this // echo str_replace(array(', ', ' '), '_', strtolower("123 Tree Street, Connecticut")); ?> 

Вывод :

 123_tree_street_connecticut 123_tree_street_connecticut 

Надеюсь, это поможет вам. Благодаря!!

Я не уверен, что есть встроенное регулярное выражение для изменения случая. Но я думаю, вы можете сделать это руками, написав новое регулярное выражение для каждого персонажа.

Преобразование в верхний регистр:

 $new_string = preg_replace( array('a', 'b', 'c', 'd', ....), array('A', 'B', 'C', 'D', ....), $string ); 

Я думаю, вы поняли.