Solved

word case format

Posted on 2009-05-09
4
207 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
Comment Utility
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
Comment Utility
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 500 total points
Comment Utility
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
Comment Utility
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

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

743 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now