Solved

Replace words in string

Posted on 2009-04-01
3
333 Views
Last Modified: 2012-05-06
I have documents, and there are certain words in those documents that I want to replace with a new word.

for example, I want to replace all instances of

dog with cat.

I know I can do a str_replace and this will do it for me, however I run into an issue where it would replace "hotdog" with "hotcat", which is something I do not want to do.  So str_replace is not an option.

Some of the words, also have an apostrophe in them, so I would like to take those into account as well.
0
Comment
Question by:Azurewave
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 3

Expert Comment

by:FirestormX
ID: 24043668
You would want to use a regular expression (regex), and the preg_replace function.

We basically make an array of the things we want to find, then run them through preg_replace.
You may want to do some research into regex, but basically it uses characters to represent things; for example, "?" means "if there is 1 or 0 instances of the previous character". So if you are looking for something like
"it's" and "its", then you could do a search for "it'?s" (it will match strings with both the ' and without).

I don't have an incredibly good grasp on regex, but I believe \b defines a word boundary between anything encased in it. So if you were searching "\bit'?s\b" in "it's like a little bit of its own flavour", it would find "it's", and "its", but not the "its" in "bits".

Hopefully I explained that properly. You could take a look at http://www.regular-expressions.info/wordboundaries.html (or http://www.regular-expressions.info/wordboundaries.html for more info on the \b tag)
0
 
LVL 3

Expert Comment

by:FirestormX
ID: 24043746
Whoops, I forgot to show you that in practise. In PHP, the regex values must be between / tags to signify they are regex.  In the example we'll replace "it's", and "its" (by searching "it'?s"), "dog", and both "cat" and "cats" (by searching "cats?").
I also forgot to note that anything in the searching expression can be back-tracked by putting it in brackets. That is to say, if you search for "cat(s?)", you can reference what's inside of the brackets as $1 (or whatever number the bracket is at).

I've provded an example below, but I'm at work right now, so unfortunately I don't have time to test it, so it may need some tweaking.
$search = array('/\bit'?s\b/', '/\bdog\b/', '/\bcat(s?)\b/'); //What to replace
$replace = array('it is', 'cat', 'dog$1');
$old_string = "$_POST['text']";
$new_string = preg_replace($search, $replace, $old_string);

Open in new window

0
 
LVL 13

Accepted Solution

by:
marchent earned 500 total points
ID: 24044155

$content = 'dog my dog hotdog dog\'s place the dog123 67dog77 dog and only dog';
$content = preg_replace('/(\W)dog(\W)/i', '$1cat$2', $content);  ## repalce from middle
$content = preg_replace('/^dog(\W)/i', 'cat$1', $content);  ## repalce from first
$content = preg_replace('/(\W)dog$/i', '$1cat', $content);  ## repalce from last
print "$content\n";

Open in new window

0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Developers of all skill levels should learn to use current best practices when developing websites. However many developers, new and old, fall into the trap of using deprecated features because this is what so many tutorials and books tell them to u…
Many old projects have bad code, but the budget doesn't exist to rewrite the codebase. You can update this code to be safer by introducing contemporary input validation, sanitation, and safer database queries.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
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 …

738 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