Solved

Replace words in string

Posted on 2009-04-01
3
335 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

Why Off-Site Backups Are The Only Way To Go

You are probably backing up your data—but how and where? Ransomware is on the rise and there are variants that specifically target backups. Read on to discover why off-site is the way to go.

Question has a verified solution.

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

This article discusses four methods for overlaying images in a container on a web page
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
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 dynamically set the form action using jQuery.

690 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