Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
EVOSandru6
3 / 3 / 6
Регистрация: 23.05.2012
Сообщений: 445
#1

Как разбить Горбатое слово в php?

23.07.2015, 11:25. Просмотров 836. Ответов 2
Метки нет (Все метки)

Добрый день,

Нужно, чтобы из CategoryCars получилось category-cars или хотя бы ['сategory','сars']
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2015, 11:25
Ответы с готовыми решениями:

Как разбить слово на отдельные буквы?
Подскажите, пожалуйста, какая есть функция, чтобы разбить слово на отдельные...

Как разбить строку на слова по некоторому символу, php?
Есть строка "город (Субъект)". Например, "Чита (Забайкальский край)" как мне...

Разбить слово
Здравствуйте. Не могу понять как, например, из этого слова "testing@mail.ru"...

Слово php как так wtf?
Привет пацаны, в примере который ниже, немогу понять вот это значение "php" &&...

Как выбрать слово после знака(?) в php
Всем привет! Есть текст(вопрос), а после него другой текст только уже без...

2
Para bellum
Эксперт PHP
3969 / 2955 / 935
Регистрация: 06.01.2011
Сообщений: 8,646
23.07.2015, 12:57 #2
Можно так:
PHP
1
2
3
4
5
6
7
8
9
<?php 
    # Исходная строка
    $string = 'CategoryCars';
    
    # Разбиваем по заглавной букве и заменяем
    $result = strtolower( preg_replace('~(?!\b)([A-Z])~', '-\\1', $string) );
    
    # Выводим
    echo $result;
1
Jewbacabra
Эксперт PHP
3244 / 2744 / 1245
Регистрация: 24.04.2014
Сообщений: 8,363
23.07.2015, 13:15 #3
Лучший ответ Сообщение было отмечено EVOSandru6 как решение

Решение

PHP
1
2
3
4
5
6
function splitWords($str) {
    $arr = [];
    preg_match_all('/([A-Z][^A-Z]*)/', $str, $arr);
    return strtolower(implode('-', $arr[0]));
}
echo splitWords('CategoryCars');
Добавлено через 16 минут
без регулярок:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getForReplace() {
    $res = [];
    for ($i='A', $j='a'; $i <= 'Z' && !isset($i[1]); ++$i, ++$j) {
        $res[0][] = $i;
        $res[1][] = "-$j";
    }
    return $res;
}
 
function splitWords($str) {
    $first = strtolower($str[0]);
    $str = substr($str, 1);
    $forReplace = getForReplace();
    return $first . str_replace($forReplace[0], $forReplace[1], $str);
}
echo splitWords('CategoryCars');
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 13:15

Организовать поиск по сайту PHP&MySQL. Как просклонять слово?
Пример: При запросе &quot;медведь&quot;, пользователю надо выдать &quot;медведи&quot;,...

Как называется выражение <<<слово . слово;
Как эту запись правильно назвать? Оператором, конструкцией языка или ещё как?...

Как заменить PHP 7 на PHP 5.6 в Ubuntu 16.04? Установлена как модуль Apache 2.4
Переехал на новый VPS а на нем по умолчанию стоит 7 PHP. Я хочу поставить 5.6...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru