Solved

word case format

Posted on 2009-05-09
4
208 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 500 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Deprecated and Headed for the Dustbin By now, you have probably heard that some PHP features, while convenient, can also cause PHP security problems.  This article discusses one of those, called register_globals.  It is a thing you do not want.  …
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

929 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

11 Experts available now in Live!

Get 1:1 Help Now