উত্তর:
আকারের জন্য এটি ব্যবহার করে দেখুন:
$tests = array(
'simpleTest' => 'simple_test',
'easy' => 'easy',
'HTML' => 'html',
'simpleXML' => 'simple_xml',
'PDFLoad' => 'pdf_load',
'startMIDDLELast' => 'start_middle_last',
'AString' => 'a_string',
'Some4Numbers234' => 'some4_numbers234',
'TEST123String' => 'test123_string',
);
foreach ($tests as $test => $result) {
$output = from_camel_case($test);
if ($output === $result) {
echo "Pass: $test => $result\n";
} else {
echo "Fail: $test => $result [$output]\n";
}
}
function from_camel_case($input) {
preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $input, $matches);
$ret = $matches[0];
foreach ($ret as &$match) {
$match = $match == strtoupper($match) ? strtolower($match) : lcfirst($match);
}
return implode('_', $ret);
}
আউটপুট:
Pass: simpleTest => simple_test
Pass: easy => easy
Pass: HTML => html
Pass: simpleXML => simple_xml
Pass: PDFLoad => pdf_load
Pass: startMIDDLELast => start_middle_last
Pass: AString => a_string
Pass: Some4Numbers234 => some4_numbers234
Pass: TEST123String => test123_string
এটি নিম্নলিখিত নিয়মগুলি প্রয়োগ করে:
একটি সংক্ষিপ্ত সমাধান: সরল নিয়মিত অভিব্যক্তি এবং "ট্রেলিং-আন্ডারস্কোর" সমস্যাটি ঠিক করার সাথে সম্পাদকের অনুরূপ :
$output = strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $input));
নোট করুন যে এর মতো মামলাগুলি উপরের সমাধানটি ব্যবহার করে SimpleXML
রূপান্তরিত হবে simple_x_m_l
। এটিকে SimpleXml
অ্যালগরিদমের পরিবর্তে উটের ক্ষেত্রে চিহ্নিতকরণ (সঠিক হবে ) এর একটি ভুল ব্যবহার হিসাবেও বিবেচনা করা যেতে পারে যেহেতু এই ধরনের ক্ষেত্রে সর্বদা অস্পষ্ট থাকে - এমনকি বড় হাতের অক্ষরকে একটি স্ট্রিং ( simple_xml
) এ গ্রুপযুক্ত করেও এই ধরণের অ্যালগোরিদম সর্বদা অন্যান্য প্রান্তের ক্ষেত্রে ব্যর্থ হয় মত XMLHTMLConverter
অথবা এক অক্ষর বর্ণমালা, ইত্যাদি কাছাকাছি শব্দ আপনি (বরং বিরল) প্রান্ত মামলা সম্পর্কে কিছু মনে না করেন এবং হাতল করতে চান SimpleXML
সঠিকভাবে আপনি একটি সামান্য আরো জটিল সমাধান ব্যবহার করতে পারেন:
$output = ltrim(strtolower(preg_replace('/[A-Z]([A-Z](?![a-z]))*/', '_$0', $input)), '_');
একটি সংক্ষিপ্ত সমাধান এবং কিছু জটিল ব্যবহারের মামলা পরিচালনা করতে পারে:
function decamelize($string) {
return strtolower(preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', $string));
}
এই সমস্ত ক্ষেত্রে পরিচালনা করতে পারেন:
simpleTest => simple_test
easy => easy
HTML => html
simpleXML => simple_xml
PDFLoad => pdf_load
startMIDDLELast => start_middle_last
AString => a_string
Some4Numbers234 => some4_numbers234
TEST123String => test123_string
hello_world => hello_world
hello__world => hello__world
_hello_world_ => _hello_world_
hello_World => hello_world
HelloWorld => hello_world
helloWorldFoo => hello_world_foo
hello-world => hello-world
myHTMLFiLe => my_html_fi_le
aBaBaB => a_ba_ba_b
BaBaBa => ba_ba_ba
libC => lib_c
আপনি এখানে এই ফাংশনটি পরীক্ষা করতে পারেন: http://syframework.alwaysdata.net/dameamelize
রুবির String#camelize
এবং থেকে পোর্ট করা হয়েছে String#decamelize
।
function decamelize($word) {
return preg_replace(
'/(^|[a-z])([A-Z])/e',
'strtolower(strlen("\\1") ? "\\1_\\2" : "\\2")',
$word
);
}
function camelize($word) {
return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\\2")', $word);
}
উপরের সমাধানগুলি মিস করতে পারে এমন একটি কৌশল হ'ল 'ই' সংশোধক যা preg_replace
পিএইচপি কোড হিসাবে প্রতিস্থাপনের স্ট্রিংকে মূল্যায়নের কারণ করে।
e
জন্য পতাকা preg_replace
পিএইচপি 5.5-এ অবচয় করা হচ্ছে।
^|
বা strlen
।
Symfony Serializer কম্পোনেন্ট টি CamelCaseToSnakeCaseNameConverter দুটি পদ্ধতি আছে যা normalize()
এবং denormalize()
। এগুলি নিম্নলিখিত হিসাবে ব্যবহার করা যেতে পারে:
$nameConverter = new CamelCaseToSnakeCaseNameConverter();
echo $nameConverter->normalize('camelCase');
// outputs: camel_case
echo $nameConverter->denormalize('snake_case');
// outputs: snakeCase
$nameConverter->normalize('CamelCase')
আউটপুট _camel_case
Symfony Serializer কম্পোনেন্ট এর বর্তমান সংস্করণ 3.2 হবে।
বেশিরভাগ সমাধান এখানে ভারী হাতে অনুভূত হয়। আমি যা ব্যবহার করি তা এখানে:
$underscored = strtolower(
preg_replace(
["/([A-Z]+)/", "/_([A-Z]+)([A-Z][a-z])/"],
["_$1", "_$1_$2"],
lcfirst($camelCase)
)
);
"ক্যামেলসিএএসই" কে "উট_ক্যাসে" রূপান্তরিত করা হয়েছে
lcfirst($camelCase)
প্রথম অক্ষরটি কমিয়ে দেবে (আন্ডারস্কোর দিয়ে শুরু করতে 'ক্যামেলসিএএসই' রূপান্তরিত আউটপুট এড়ানো হবে)[A-Z]
বড় অক্ষর খুঁজে+
একটানা প্রতিটি বড় হাতের অক্ষরকে একটি শব্দ হিসাবে বিবেচনা করবে (উট_সি_এ_স_ইতে রূপান্তরিত করতে 'ক্যামেলসিএএসই' এড়ানো হবে)ThoseSPECCases
->those_spec_cases
those_speccases
strtolower([…])
আউটপুটটিকে ছোট হাতের দিকে পরিবর্তিত করেlcfirst
$ উট কেসে ফাংশন যুক্ত করতে হবে
ucfirst()
। ডেমোUSADollarSymbol
হয়ে যায় আমি এই সমাধানটির প্রস্তাব দিই না কারণ এতে রেগেক্সের সাহায্যে ইনপুট স্ট্রিং দিয়ে দুটি পাস করতে হবে - একটি অপরিশোধিত প্যাটার্নের লক্ষণ। u_sa_dollar_symbol
পিএইচপি এই আফিকের জন্য বিল্ট ইন ফাংশন সরবরাহ করে না, তবে আমি এখানে ব্যবহার করি
function uncamelize($camel,$splitter="_") {
$camel=preg_replace('/(?!^)[[:upper:]][[:lower:]]/', '$0', preg_replace('/(?!^)[[:upper:]]+/', $splitter.'$0', $camel));
return strtolower($camel);
}
বিভাজনটি ফাংশন কলে নির্দিষ্ট করা যায়, তাই আপনি এটির মতো কল করতে পারেন
$camelized="thisStringIsCamelized";
echo uncamelize($camelized,"_");
//echoes "this_string_is_camelized"
echo uncamelize($camelized,"-");
//echoes "this-string-is-camelized"
mb_strtolower
এবং /u
অপশনটির সাথে সামঞ্জস্য করতে পারেন preg_replace
।
আপনার এটির মাধ্যমে একটি রেজেক্স চালানো দরকার যা প্রতিটি বড় হাতের অক্ষরের সাথে মিল থাকে তবে শুরুতে হয় এবং এটিকে আন্ডারক্রোর প্লাসের সাথে প্রতিস্থাপন করে। একটি utf-8 সমাধানটি হ'ল:
header('content-type: text/html; charset=utf-8');
$separated = preg_replace('%(?<!^)\p{Lu}%usD', '_$0', 'AaaaBbbbCcccDdddÁáááŐőőő');
$lower = mb_strtolower($separated, 'utf-8');
echo $lower; //aaaa_bbbb_cccc_dddd_áááá_őőőő
যদি আপনার স্ট্রিংটি কীসের বিষয়ে নিশ্চিত না হন তবে প্রথমে এটি পরীক্ষা করা ভাল, কারণ এই কোডটি ধরে নিয়েছে যে ইনপুট camelCase
পরিবর্তে underscore_Case
বা এর পরিবর্তে রয়েছে dash-Case
, সুতরাং যদি উত্তরগুলির মধ্যে বড় হাতের অক্ষর থাকে তবে এটি তাদের মধ্যে আন্ডারস্কোর যুক্ত করবে।
ক্লিটাসের গৃহীত উত্তরটি হ'ল অতিমাত্রায় জটিল im এবং এটি লাতিন অক্ষরের সাথেই কাজ করে। আমি এটি একটি খুব খারাপ সমাধান খুঁজে পেয়েছি এবং কেন এটি একেবারেই গৃহীত হয়েছিল তা অবাক করে দিয়েছি। রূপান্তর TEST123String
করা test123_string
কোনও বৈধ প্রয়োজনীয়তা নয়। আমি বরং এটিকে সহজ এবং পরিবর্তে পৃথক ABCccc
করে রেখেছি কারণ এটি এইভাবে তথ্য হারাবে না এবং পশ্চাদপদ রূপান্তরটি ঠিক একই স্ট্রিংটি দিয়ে শুরু করবে যা আমরা শুরু করেছি। এমনকি আপনি যদি অন্যভাবে এটি করতে চান তবে আপনি যদি কোনও রেজেক্স বিশেষজ্ঞ না হন তবে ইতিবাচক লুকবিহিন্ড বা লিকবিহাইন্ড ব্যতীত দুটি রেজিেক্স সহ এটির জন্য একটি রেজেক্স লিখতে তুলনামূলক সহজ । এটিকে সাবস্ট্রিংগুলিতে বিভক্ত করার দরকার নেই এবং সিদ্ধান্ত নেওয়ার মধ্যে যেটি কেবল ব্যবহার করা সম্পূর্ণ জরিমানা হবে তা উল্লেখ না করে ।a_b_cccc
ab_cccc
(?<!^)\p{Lu}\p{Ll}|(?<=\p{Ll})\p{Lu}
strtolower
lcfirst
strtolower
আপনি যদি পিএইচপি 5.4 সংস্করণ সন্ধান করছেন এবং পরে উত্তরটি এখানে দেওয়া হয়:
function decamelize($word) {
return $word = preg_replace_callback(
"/(^|[a-z])([A-Z])/",
function($m) { return strtolower(strlen($m[1]) ? "$m[1]_$m[2]" : "$m[2]"); },
$word
);
}
function camelize($word) {
return $word = preg_replace_callback(
"/(^|_)([a-z])/",
function($m) { return strtoupper("$m[2]"); },
$word
);
}
অভিনব নয় মোটেও সহজ এবং দ্রুত জাহান্নাম হিসাবে:
function uncamelize($str)
{
$str = lcfirst($str);
$lc = strtolower($str);
$result = '';
$length = strlen($str);
for ($i = 0; $i < $length; $i++) {
$result .= ($str[$i] == $lc[$i] ? '' : '_') . $lc[$i];
}
return $result;
}
echo uncamelize('HelloAWorld'); //hello_a_world
++$i
পরিবর্তে $i++
এটিকে কিছুটা দ্রুততর করা হবে;)
"ক্যামেলকেস" থেকে "উট_ক্যাস":
function camelToSnake($camel)
{
$snake = preg_replace('/[A-Z]/', '_$0', $camel);
$snake = strtolower($snake);
$snake = ltrim($snake, '_');
return $snake;
}
বা:
function camelToSnake($camel)
{
$snake = preg_replace_callback('/[A-Z]/', function ($match){
return '_' . strtolower($match[0]);
}, $camel);
return ltrim($snake, '_');
}
this-kind-of-output
রিজেক্স ব্যবহার না করে এমন একটি সংস্করণ আলচিটেক্ট উত্সে পাওয়া যাবে :
decamelize($str, $glue='_')
{
$counter = 0;
$uc_chars = '';
$new_str = array();
$str_len = strlen($str);
for ($x=0; $x<$str_len; ++$x)
{
$ascii_val = ord($str[$x]);
if ($ascii_val >= 65 && $ascii_val <= 90)
{
$uc_chars .= $str[$x];
}
}
$tok = strtok($str, $uc_chars);
while ($tok !== false)
{
$new_char = chr(ord($uc_chars[$counter]) + 32);
$new_str[] = $new_char . $tok;
$tok = strtok($uc_chars);
++$counter;
}
return implode($new_str, $glue);
}
সুতরাং এখানে একটি ওয়ান-লাইনার রয়েছে:
strtolower(preg_replace('/(?|([a-z\d])([A-Z])|([^\^])([A-Z][a-z]))/', '$1_$2', $string));
g
এই রেজেক্সে কোনও সংশোধক যুক্ত করার পরামর্শ দেব ।
g
এটি আমার পক্ষে ভাল কাজ করে।
g
। তবে আমি যে বাক্যটি দিয়ে পরীক্ষা করেছি তা মনে করতে পারছি না।
লারাভেল 5.6 এটি করার একটি খুব সহজ উপায় সরবরাহ করে:
/**
* Convert a string to snake case.
*
* @param string $value
* @param string $delimiter
* @return string
*/
public static function snake($value, $delimiter = '_'): string
{
if (!ctype_lower($value)) {
$value = strtolower(preg_replace('/(.)(?=[A-Z])/u', '$1'.$delimiter, $value));
}
return $value;
}
এটি কী করে: যদি এটি দেখায় যে প্রদত্ত স্ট্রিংয়ে কমপক্ষে একটি বড় হাতের অক্ষর রয়েছে, তবে এটি কোনও অক্ষর ( ) এর পরে মূল অক্ষর ( ) এর পরে অনুসন্ধান করার জন্য একটি ইতিবাচক চেহারা ব্যবহার .
করে (?=[A-Z])
। এরপরে এটি পাওয়া অক্ষরের পরিবর্তে এর মানটির সাথে পৃথককারীকে অনুসরণ করে _
।
রেল থেকে সরাসরি বন্দর (:: বা সংক্ষিপ্ত নামগুলির জন্য তাদের বিশেষ হ্যান্ডলিং বিয়োগ) হবে
function underscore($word){
$word = preg_replace('#([A-Z\d]+)([A-Z][a-z])#','\1_\2', $word);
$word = preg_replace('#([a-z\d])([A-Z])#', '\1_\2', $word);
return strtolower(strtr($word, '-', '_'));
}
পিএইচপি জানা, এটি এখানে দেওয়া অন্যান্য উত্তরগুলিতে ম্যানুয়াল পার্সিংয়ের চেয়ে দ্রুত হবে। অসুবিধাটি হ'ল শব্দের মধ্যে বিভাজক হিসাবে কী ব্যবহার করবেন তা আপনি চয়ন করতে পারেন না, তবে এটি প্রশ্নের অংশ ছিল না।
প্রাসঙ্গিক রেল উত্স কোডও পরীক্ষা করে দেখুন
নোট করুন যে এটি ASCII সনাক্তকারীদের সাথে ব্যবহারের উদ্দেশ্যে intended আপনার যদি ASCII সীমার বাইরে অক্ষরগুলি দিয়ে এটি করতে হয় তবে ব্যবহার করতে '/ u' পরিবর্তনকারীটি preg_match
ব্যবহার করুন mb_strtolower
।
Godশ্বরের সাথে ছয় বছরের পুরানো প্রশ্নে আমার অবদান এখানে কত জবাব জানে ...
এটি প্রদত্ত স্ট্রিংয়ের সমস্ত শব্দকে যা ক্যামেলকেসকে স্নেককেসে রূপান্তরিত করবে। উদাহরণস্বরূপ "সুপারস্পেশিয়ালউইউজ এবং ফিজবউজ καιΚάτιΑκόμα" কে "সুপার_স্পেশাল_ওয়াসাল এবং ফিজ_বজ και_κάτι_ακόμα" তে রূপান্তর করা হবে।
mb_strtolower(
preg_replace_callback(
'/(?<!\b|_)\p{Lu}/u',
function ($a) {
return "_$a[0]";
},
'SuperSpecialAwesome'
)
);
ক্যামেলকেস থেকে স্নাইকেস শব্দটি তৈরির জন্য Yii2 এর আলাদা ফাংশন রয়েছে।
/**
* Converts any "CamelCased" into an "underscored_word".
* @param string $words the word(s) to underscore
* @return string
*/
public static function underscore($words)
{
return strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $words));
}
সংক্ষিপ্ত সমাধান:
$subject = "PascalCase";
echo strtolower(preg_replace('/\B([A-Z])/', '_$1', $subject));
আমার অনুরূপ সমস্যা ছিল তবে কোনও উত্তর খুঁজে পেল না যা ক্যামেলকেসকে সাপ_কেসে রূপান্তর করতে পারে তা সন্তুষ্ট করে, যখন _
আন্ডারস্কোর, বা সমস্ত ক্যাপ সংক্ষেপের সাথে নামগুলির জন্য সদৃশ বা অনর্থক আন্ডারস্কোরগুলি এড়িয়ে যায় ।
নীচে সমস্যাটি হ'ল:
CamelCaseClass => camel_case_class
ClassName_WithUnderscores => class_name_with_underscore
FAQ => faq
আমি যে সমাধানটি লিখেছি তা হ'ল একটি সহজ দুটি ফাংশন কল, ছোট হাতের অক্ষর এবং সন্ধান এবং একটানা ছোট ছোট হাতের অক্ষরের জন্য প্রতিস্থাপন:
strtolower(preg_replace("/([a-z])([A-Z])/", "$1_$2", $name));
function camel2snake($name) {
$str_arr = str_split($name);
foreach ($str_arr as $k => &$v) {
if (ord($v) >= 64 && ord($v) <= 90) { // A = 64; Z = 90
$v = strtolower($v);
$v = ($k != 0) ? '_'.$v : $v;
}
}
return implode('', $str_arr);
}
$name{$k}
(বা।) ব্যবহার করে চরগুলি অ্যাক্সেস করতে পারেন$name[$k]
) যা আপনার কোডটি দীর্ঘায়িত করবে তবে এটিকে অ্যারেতে এবং রূপান্তরিত করার বৃহত ওভারহেডকে এড়িয়ে চলে।
এখানে সবচেয়ে খারাপ উত্তরটি সেরা হওয়ার খুব কাছাকাছি ছিল (একটি কাঠামো ব্যবহার করুন)। না, কেবল উত্স কোডটি একবার দেখুন। একটি সুপ্রতিষ্ঠিত কাঠামো কী ব্যবহার করে তা আরও নির্ভরযোগ্য পদ্ধতির (চেষ্টা ও পরীক্ষিত) হবে। জেন্ডার কাঠামোর কিছু শব্দ ফিল্টার রয়েছে যা আপনার প্রয়োজনের সাথে খাপ খায়। উত্স ।
উত্স থেকে আমি অভিযোজিত কয়েকটি পদ্ধতি এখানে রয়েছে।
function CamelCaseToSeparator($value,$separator = ' ')
{
if (!is_scalar($value) && !is_array($value)) {
return $value;
}
if (defined('PREG_BAD_UTF8_OFFSET_ERROR') && preg_match('/\pL/u', 'a') == 1) {
$pattern = ['#(?<=(?:\p{Lu}))(\p{Lu}\p{Ll})#', '#(?<=(?:\p{Ll}|\p{Nd}))(\p{Lu})#'];
$replacement = [$separator . '\1', $separator . '\1'];
} else {
$pattern = ['#(?<=(?:[A-Z]))([A-Z]+)([A-Z][a-z])#', '#(?<=(?:[a-z0-9]))([A-Z])#'];
$replacement = ['\1' . $separator . '\2', $separator . '\1'];
}
return preg_replace($pattern, $replacement, $value);
}
function CamelCaseToUnderscore($value){
return CamelCaseToSeparator($value,'_');
}
function CamelCaseToDash($value){
return CamelCaseToSeparator($value,'-');
}
$string = CamelCaseToUnderscore("CamelCase");
এই কার্যকারিতা সরবরাহ করে একটি গ্রন্থাগার রয়েছে:
SnakeCaseFormatter::run('CamelCase'); // Output: "camel_case"
আপনি যদি লারাভেল কাঠামো ব্যবহার করেন তবে আপনি কেবল স্নাপকেস () পদ্ধতি ব্যবহার করতে পারেন ।
এটি একটি ছোট উপায়:
function camel_to_snake($input)
{
return strtolower(ltrim(preg_replace('/([A-Z])/', '_\\1', $input), '_'));
}
রেজেেক্স ব্যবহার না করে কীভাবে ডি-ক্যামিটাইজ করবেন:
function decamelize($str, $glue = '_') {
$capitals = [];
$replace = [];
foreach(str_split($str) as $index => $char) {
if(!ctype_upper($char)) {
continue;
}
$capitals[] = $char;
$replace[] = ($index > 0 ? $glue : '') . strtolower($char);
}
if(count($capitals) > 0) {
return str_replace($capitals, $replace, $str);
}
return $str;
}
একটি সম্পাদনা:
2019 এ আমি কীভাবে করব:
function toSnakeCase($str, $glue = '_') {
return preg_replace_callback('/[A-Z]/', function ($matches) use ($glue) {
return $glue . strtolower($matches[0]);
}, $str);
}
এবং যখন পিএইচপি 7.4 প্রকাশিত হবে:
function toSnakeCase($str, $glue = '_') {
return preg_replace_callback('/[A-Z]/', fn($matches) => $glue . strtolower($matches[0]), $str);
}
জেন্ড ওয়ার্ড ফিল্টারগুলির ফিল্টার ক্লাসগুলি ব্যবহার করা সহজ :
<?php
namespace MyNamespace\Utility;
use Zend\Filter\Word\CamelCaseToUnderscore;
use Zend\Filter\Word\UnderscoreToCamelCase;
class String
{
public function test()
{
$underscoredStrings = array(
'simple_test',
'easy',
'html',
'simple_xml',
'pdf_load',
'start_middle_last',
'a_string',
'some4_numbers234',
'test123_string',
);
$camelCasedStrings = array(
'simpleTest',
'easy',
'HTML',
'simpleXML',
'PDFLoad',
'startMIDDLELast',
'AString',
'Some4Numbers234',
'TEST123String',
);
echo PHP_EOL . '-----' . 'underscoreToCamelCase' . '-----' . PHP_EOL;
foreach ($underscoredStrings as $rawString) {
$filteredString = $this->underscoreToCamelCase($rawString);
echo PHP_EOL . $rawString . ' >>> ' . $filteredString . PHP_EOL;
}
echo PHP_EOL . '-----' . 'camelCaseToUnderscore' . '-----' . PHP_EOL;
foreach ($camelCasedStrings as $rawString) {
$filteredString = $this->camelCaseToUnderscore($rawString);
echo PHP_EOL . $rawString . ' >>> ' . $filteredString . PHP_EOL;
}
}
public function camelCaseToUnderscore($input)
{
$camelCaseToSeparatorFilter = new CamelCaseToUnderscore();
$result = $camelCaseToSeparatorFilter->filter($input);
$result = strtolower($result);
return $result;
}
public function underscoreToCamelCase($input)
{
$underscoreToCamelCaseFilter = new UnderscoreToCamelCase();
$result = $underscoreToCamelCaseFilter->filter($input);
return $result;
}
}
----- underscoreToCamelCase -----
সরল_তম >>> সরলতম টেস্ট
সহজ >>> সহজ
এইচটিএমএল >>> এইচটিএমএল
সরল_এক্সএমএল >>> সিম্পল এক্সএমএল
পিডিএফ_লোড >>> পিডিএফলোড
স্টার্ট_মিজল_লাস্ট >>> স্টার্টমিডলস্ট
a_string >>> সংযুক্তি
some4_numbers234 >>> কিছু 4 নাম্বার 234
test123_string >>> টেস্ট 123 স্ট্রিং
----- camelCaseToUnderscore -----
সরলতম টেস্ট >>> সরল_তম test
সহজ >>> সহজ
এইচটিএমএল >>> এইচটিএমএল
সরল এক্সএমএল >>> সরল_ এক্সএমএল
পিডিএফ লোড >>> পিডিএফ_লোড
startMIDDLELast >>> start_middle_last
এস্ট্রিং >>> এ_স্ট্রিং
কিছু 4 নাম্বার 234 >>> কিছু 4_ সংখ্যা 234
TEST123 স্ট্রিং >>> টেস্ট 123_ স্ট্রিং
ওপেন সোর্স টার্বোকমন্স লাইব্রেরিতে স্ট্রিংউটিলস শ্রেণীর অভ্যন্তরে একটি সাধারণ উদ্দেশ্য বিন্যাসের ক্যাস () পদ্ধতি রয়েছে যা আপনাকে স্ট্রিংকে প্রচুর সাধারণ কেস ফর্ম্যাটগুলিতে রূপান্তর করতে দেয় যেমন ক্যামেলকেস, আপারকামেলকেস, লোয়ারকামেলকেস, স্নেক কেস, শিরোনাম কেস এবং আরও অনেক কিছু।
https://github.com/edertone/TurboCommons
এটি ব্যবহার করতে, আপনার প্রকল্পে ফার ফাইলটি আমদানি করুন এবং:
use org\turbocommons\src\main\php\utils\StringUtils;
echo StringUtils::formatCase('camelCase', StringUtils::FORMAT_SNAKE_CASE);
// will output 'camel_Case'
$str = 'FooBarBaz';
return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $str)); // foo_bar_baz
যদি আপনি এটি দিয়ে শুরু করতে পারেন:
$string = 'Camel_Case'; // underscore or any other separator...
তারপরে আপনি এই দুটি ক্ষেত্রেই কেবল রূপান্তর করতে পারেন:
$pascal = str_replace("_", "", $string);
$snake = strtolower($string);
বা অন্য কোনও মামলা:
$capitalized = str_replace("_", " ", $string); // Camel Case
$constant = strtoupper($string); // CAMEL_CASE
$train = str_replace("_", "-", $snake); // camel-case