Reputation: 169
I am trying to replace text between two tags in a html document. I want to replace any text that isn't enclosed with a < and >. I want to use str_replace to do this.
php $string = '<html><h1> some text i want to replace</h1><p>some stuff i want to replace </p>';
$text_to_echo = str_replace("Bla","Da",$String);
echo $text_to_echo;
Upvotes: 1
Views: 5001
Reputation: 809
Try this:
<?php
$string = '<html><h1> some text i want to replace</h1><p>
some stuff i want to replace </p>';
$text_to_echo = preg_replace_callback(
"/(<([^.]+)>)([^<]+)(<\\/\\2>)/s",
function($matches){
/*
* Indexes of array:
* 0 - full tag
* 1 - open tag, for example <h1>
* 2 - tag name h1
* 3 - content
* 4 - closing tag
*/
// print_r($matches);
$text = str_replace(
array("text", "want"),
array('TEXT', 'need'),
$matches[3]
);
return $matches[1].$text.$matches[4];
},
$string
);
echo $text_to_echo;
Upvotes: 1
Reputation: 3473
str_replace()
can not handle this
You will need regex
or preg_replace
for that
Upvotes: 0