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
Solved

Replace words in string

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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
PHP Installer 5 37
Number of hours between date in DB and now 8 21
PHP Soap Server returning XML but < & > as &lt; / &gt; 9 45
Link failure 16 33
Generating table dynamically is the most common issue faced by php developers.... So it seems there is a need of an article that explains the basic concept of generating tables dynamically. It just requires a basic knowledge of html and little maths…
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.
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 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…

860 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