php

Hướng dẫn dùng camelcase example trong PHP

answer

143

Không có regex hoặc gọi lại cần thiết. Hầu như tất cả các công việc có thể được thực hiện với ucwords:

function dashesToCamelCase[$string, $capitalizeFirstCharacter = false] 
{

    $str = str_replace[' ', '', ucwords[str_replace['-', ' ', $string]]];

    if [!$capitalizeFirstCharacter] {
        $str[0] = strtolower[$str[0]];
    }

    return $str;
}

echo dashesToCamelCase['this-is-a-string'];

Nếu bạn đang sử dụng PHP> = 5.3, bạn có thể sử dụng lcfirst thay vì strtolower.

Cập nhật

Một tham số thứ hai đã được thêm vào ucwords trong PHP 5.4.32 / 5.5.16, điều đó có nghĩa là trước tiên chúng ta không cần thay đổi dấu gạch ngang thành dấu cách [nhờ Lars Ebert và PeterM đã chỉ ra điều này]. Đây là mã cập nhật:

function dashesToCamelCase[$string, $capitalizeFirstCharacter = false] 
{

    $str = str_replace['-', '', ucwords[$string, '-']];

    if [!$capitalizeFirstCharacter] {
        $str = lcfirst[$str];
    }

    return $str;
}

echo dashesToCamelCase['this-is-a-string'];

143 hữu ích 3 bình luận chia sẻ

answer

41

Điều này có thể được thực hiện rất đơn giản, bằng cách sử dụng ucwords chấp nhận dấu phân cách là param:

function camelize[$input, $separator = '_']
{
    return str_replace[$separator, '', ucwords[$input, $separator]];
}

LƯU Ý: Cần php ít nhất 5.4.32, 5.5.16

41 hữu ích 4 bình luận chia sẻ

answer

7

đây là biến thể của tôi về cách đối phó với nó. Ở đây tôi có hai chức năng, đầu tiên một camelCase biến bất cứ thứ gì thành camelCase và nó sẽ không gây rối nếu biến đã chứa cameCase. UncamelCase thứ hai biến camelCase thành dấu gạch dưới [tính năng tuyệt vời khi xử lý các khóa cơ sở dữ liệu].

function camelCase[$str] {
    $i = array["-","_"];
    $str = preg_replace['/[[a-z]][[A-Z]]/', "\\1 \\2", $str];
    $str = preg_replace['@[^a-zA-Z0-9\-_ ]+@', '', $str];
    $str = str_replace[$i, ' ', $str];
    $str = str_replace[' ', '', ucwords[strtolower[$str]]];
    $str = strtolower[substr[$str,0,1]].substr[$str,1];
    return $str;
}
function uncamelCase[$str] {
    $str = preg_replace['/[[a-z]][[A-Z]]/', "\\1_\\2", $str];
    $str = strtolower[$str];
    return $str;
}

hãy kiểm tra cả hai:

$camel = camelCase["James_LIKES-camelCase"];
$uncamel = uncamelCase[$camel];
echo $camel." ".$uncamel;

7 hữu ích 1 bình luận chia sẻ

answer

5

Tôi có thể sẽ sử dụng preg_replace_callback[], như thế này:

function dashesToCamelCase[$string, $capitalizeFirstCharacter = false] {
  return preg_replace_callback["/-[a-zA-Z]/", 'removeDashAndCapitalize', $string];
}

function removeDashAndCapitalize[$matches] {
  return strtoupper[$matches[0][1]];
}

5 hữu ích 0 bình luận chia sẻ

answer

4

Bạn đang tìm kiếm preg numplace_callback , bạn có thể sử dụng nó như thế này:

$camelCase = preg_replace_callback['/-[.?]/', function[$matches] {
     return ucfirst[$matches[1]];
}, $dashes];

4 hữu ích 0 bình luận chia sẻ

answer

4

Quá tải một lớp, với khối tài liệu ...

/**
 * Convert underscore_strings to camelCase [medial capitals].
 *
 * @param {string} $str
 *
 * @return {string}
 */
function snakeToCamel [$str] {
  // Remove underscores, capitalize words, squash, lowercase first.
  return lcfirst[str_replace[' ', '', ucwords[str_replace['_', ' ', $str]]]];
}

4 hữu ích 4 bình luận chia sẻ

answer

3

$string = explode[ "-", $string ];
$first = true;
foreach[ $string as &$v ] {
    if[ $first ] {
        $first = false;
        continue;
    }
    $v = ucfirst[ $v ];
}
return implode[ "", $string ];

Mã chưa được kiểm tra. Kiểm tra các tài liệu PHP cho các hàm im- / explode và ucfirst.

3 hữu ích 0 bình luận chia sẻ

answer

3

function camelize[$input, $separator = '_']
{
    return lcfirst[str_replace[$separator, '', ucwords[$input, $separator]]];
}

echo [$this->camelize['someWeir-d-string']];
// output: 'someWeirdString';

3 hữu ích 0 bình luận chia sẻ

answer

2

Một lớp lót, PHP> = 5.3:

$camelCase = lcfirst[join[array_map['ucfirst', explode['-', $url]]]];

2 hữu ích 1 bình luận chia sẻ

answer

1

Ngoài ra, nếu bạn không muốn xử lý regex và muốn tránh các vòng lặp rõ ràng :

// $key = 'some-text', after transformation someText            
$key = lcfirst[implode['', array_map[function [$key] {
    return ucfirst[$key];
}, explode['-', $key]]]];

1 hữu ích 0 bình luận chia sẻ

answer

1

Đây là giải pháp rất rất dễ dàng trong một mã dòng

    $string='this-is-a-string' ;

   echo   str_replace['-', '', ucwords[$string, "-"]];

đầu ra ThisIsAString

1 hữu ích 0 bình luận chia sẻ

answer

1

Thư viện TurboCommons chứa phương thức định dạng mục đích chung bên trong lớp StringUtils, cho phép bạn chuyển đổi một chuỗi thành nhiều định dạng trường hợp phổ biến, như CamelCase, UpperCamelCase, LowerCamelCase, Snake_case, Title Case, và nhiều hơn nữa.

//github.com/edertone/TurboCommons

Để sử dụng nó, hãy nhập tệp phar vào dự án của bạn và:

use org\turbocommons\src\main\php\utils\StringUtils;

echo StringUtils::formatCase['sNake_Case', StringUtils::FORMAT_CAMEL_CASE];

// will output 'sNakeCase'

Đây là liên kết đến mã nguồn phương thức:

//github.com/edertone/TurboCommons/blob/b2e015cf89c8dbe372a5f5515e7d9763f45eba76/TurboCommons-Php/src/main/php/utils/StringUt

1 hữu ích 0 bình luận chia sẻ

answer

1

Thử đi:

$var='snake_case';
echo ucword[$var,'_'];

Đầu ra:

Snake_Case remove _ with str_replace

1 hữu ích 0 bình luận chia sẻ

answer

0

function camelCase[$text] {
    return array_reduce[
         explode['-', strtolower[$text]],
         function [$carry, $value] {
             $carry .= ucfirst[$value];
             return $carry;
         },
         ''];
}

Rõ ràng, nếu một dấu phân cách khác hơn '-', ví dụ '_', cũng được khớp, thì điều này sẽ không hoạt động, sau đó một preg numplace có thể chuyển đổi tất cả các dấu phân cách [liên tiếp] thành '-' trong văn bản $ trước ...

0 hữu ích 1 bình luận chia sẻ

answer

0

Chức năng này tương tự như chức năng của @ Svens

function toCamelCase[$str, $first_letter = false] {
    $arr = explode['-', $str];
    foreach [$arr as $key => $value] {
        $cond = $key > 0 || $first_letter;
        $arr[$key] = $cond ? ucfirst[$value] : $value;
    }
    return implode['', $arr];
}

Nhưng rõ ràng hơn, [tôi nghĩ: D] và với tham số tùy chọn để viết hoa chữ cái đầu tiên hay không.

Sử dụng:

$dashes = 'function-test-camel-case';
$ex1 = toCamelCase[$dashes];
$ex2 = toCamelCase[$dashes, true];

var_dump[$ex1];
//string[21] "functionTestCamelCase"
var_dump[$ex2];
//string[21] "FunctionTestCamelCase"

0 hữu ích 0 bình luận chia sẻ

answer

0

Một cách tiếp cận đơn giản khác:

$nasty = [' ', '-', '"', "'"]; // array of nasty characted to be removed
$cameled = lcfirst[str_replace[$nasty, '', ucwords[$string]]];

0 hữu ích 0 bình luận chia sẻ

answer

0

Nếu bạn sử dụng khung công tác Laravel, bạn có thể chỉ sử dụng phương thức camel_case [] .

camel_case['this-is-a-string'] // 'thisIsAString'

0 hữu ích 0 bình luận chia sẻ

answer

0

Đây là một lựa chọn khác:

private function camelcase[$input, $separator = '-']     
{
    $array = explode[$separator, $input];

    $parts = array_map['ucwords', $array];

    return implode['', $parts];
}

0 hữu ích 0 bình luận chia sẻ

answer

0

$stringWithDash = 'Pending-Seller-Confirmation'; $camelize = str_replace['-', '', ucwords[$stringWithDash, '-']]; echo $camelize; đầu ra: PendingSellerConf Confirmation

ucwordstham số thứ hai [tùy chọn] giúp xác định dấu phân cách để camelize chuỗi. str_replaceđược sử dụng để hoàn thiện đầu ra bằng cách loại bỏ dải phân cách.

0 hữu ích 0 bình luận chia sẻ

answer

0

Trong sử dụng Laravel Str::camel[]

use Illuminate\Support\Str;

$converted = Str::camel['foo_bar'];

// fooBar

0 hữu ích 0 bình luận chia sẻ

answer

1

Thử đi:

 return preg_replace["/\-[.]/e", "strtoupper['\\1']", $string];

1 hữu ích 2 bình luận chia sẻ

answer

2

Điều này đơn giản hơn:

$string = preg_replace[ '/-[.?]/e',"strtoupper['$1']", strtolower[ $string ] ];

2 hữu ích 1 bình luận chia sẻ

Chủ Đề