简体   繁体   中英

Need to change case of a string - PHP

$variable = "test_company_insurance_llc_chennai_limited_w-8tyu.pdf";

I need to display above the $variable like

Test Company Insurance LLC Chennai Limited W-8TYU.pdf

For that I've done:

$variable = str_replace("_"," ","test_company_insurance_llc_chennai_limited_w-8tyu.pdf");

$test  = explode(" ", $variable);
$countof = count($test);

for ($x=0; $x<$countof; $x++) {

    if($test[$x] == 'w-8tyu' || $test[$x] == 'llc') {
       $test[$x] = strtoupper($test[$x]);
       //todo
    }   

} 

I've got stuck in the to-do part.

I will change the specific words to uppercase using strtoupper.

Later, how should I need to merge the array?

Any help will be thankful...

$str_in = "test_company_insurance_llc_chennai_limited_w-8tyu.pdf";
$lst_in = explode("_", $str_in);
$lst_out = array();
foreach ($lst_in as $val) {
    switch($val) {
        case "llc"          : $lst_out[] = strtoupper($val);
                              break;
        case "w-8tyu.pdf"   : $lst_temp = explode('.', $val);
                              $lst_out[] = strtoupper($lst_temp[0]) . "." . $lst_temp[1];
                              break;
        default             : $lst_out[] = ucfirst($val);
    }
}
$str_out = implode(' ', $lst_out);
echo $str_out;

Not terribly elegant, but perhaps slightly more flexible.

$v = str_replace("_"," ","test_company_insurance_llc_chennai_limited_w-8tyu.pdf");

$acronyms = array('llc', 'w-8tyu');
$ignores  = array('pdf');

$v = preg_replace_callback('/(?:[^\._\s]+)/', function ($match) use ($acronyms, $ignores) {
    if (in_array($match[0], $ignores)) {
        return $match[0];
    }

    return in_array($match[0], $acronyms) ? strtoupper($match[0]) : ucfirst($match[0]);
}, $v);

echo $v;

The ignores can be removed provided you separate the extension from the initial value.

See the code below. I have printed the output of the code as your expected one. So Run it and reply me...

$variable = str_replace("_"," ","test_company_insurance_llc_chennai_limited_w-8tyu.pdf");

$test  = explode(" ", $variable);
$countof = count($test);

for ($x=0; $x<$countof; $x++) {

if($test[$x] == 'llc') {
   $test[$x] = strtoupper($test[$x]);
   //todo
}elseif($test[$x] == 'w-8tyu.pdf'){
  $file=basename($test[$x],'pdf');
  $info = new SplFileInfo($test[$x]);
  $test[$x] = strtoupper($file).$info->getExtension();
}
else{
  $test[$x]=ucfirst($test[$x]);
}
}
echo '<pre>';
print_r($test);
echo '</pre>';
echo $output  = implode(" ", $test);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM