?
Solved

word case format

Posted on 2009-05-09
4
Medium Priority
?
221 Views
Last Modified: 2012-05-06
hello there,
I have a php string and I would like to correct the format of some words..
$string='this pc is working slow because the pdf file is too big.. i should try and open it with my imac';
 
should be in this format
 
"this PC is working slow because the PDF file is too big.. i should try and open it with my iMac"
 
words changed PC, PDF, iMac

Open in new window

0
Comment
Question by:XK8ER
  • 3
4 Comments
 
LVL 16

Expert Comment

by:jessc7
ID: 24344983
If you know the list of words you would like to replace, you could look at using the str_ireplace function:

http://us2.php.net/manual/en/function.str-ireplace.php
In your example, using the following should work:



$string='this pc is working slow because the pdf file is too big.. i should try and open it with my imac';
 
$search  = array('pc', 'pdf', 'imac');
$replace = array('PC', 'PDF', 'iMac');
$newString = str_ireplace($search, replace , $string);

Open in new window

0
 
LVL 16

Expert Comment

by:jessc7
ID: 24344987
One minor syntax change to the above:
$string='this pc is working slow because the pdf file is too big.. i should try and open it with my imac';
 
$search  = array('pc', 'pdf', 'imac');
$replace = array('PC', 'PDF', 'iMac');
$newString = str_ireplace($search, $replace , $string);

Open in new window

0
 
LVL 7

Accepted Solution

by:
ycTIN earned 2000 total points
ID: 24346483
just use str_ireplace isn't enough.

<?php
$string='this pc is working slow because the pdf file is too big.. i should try and open it with my imac';
 
echo formatCase($string);
 
function formatCase($str) {
	$specialwords = array('PC', 'PDF', 'iMac');
 
	$directory = array();
	foreach($specialwords as $special) {
		$directory[strtolower($special)] = $special;
	}
	$result = '';
	foreach (explode(' ',$str) as $word) {
		$key = strtolower($word);
		$result .= (isset($directory[$key]) ? $directory[$key] : $word).' ';
	}
	return trim($result);
}
?>

Open in new window

0
 
LVL 16

Expert Comment

by:jessc7
ID: 24346508
I think ycTIN is headed down a more reusable path, but I think it can be made more simpler. Since str_ireplace is case insensitive, you wouldn't need two arrays in my previous example. You also wouldn't need to search for alternative case in strings manually. Here's a simplified example that works for me:
$string='this pc is working slow because the pdf file is too big.. i should try and open it with my imac';
 
$words = array('PC', 'PDF', 'iMac');
$newString = str_ireplace($words, $words , $string);
 
echo $newString;

Open in new window

0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Originally, this post was published on Monitis Blog, you can check it here . In business circles, we sometimes hear that today is the “age of the customer.” And so it is. Thanks to the enormous advances over the past few years in consumer techno…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
Suggested Courses

621 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question