Typewar
Typewar

Reputation: 983

Better way to replace multiple different words at once in PHP

I've been doing a file_get_contents code for a while now, and I'm getting really tired of using my method to replace multiple different words at once. Sometimes the site I'm file_get_contents from, has changed their layout and therefore has to change up in all this mess.

This is the method I'm using:

$results = file_get_contents('https://example.com/');

$filter1 = str_replace('https://example.com', 'index.php',        $results);
$filter2 = str_replace('<script', '<!-- OVERWRITTEN ',            $filter1);
$filter3 = str_replace('</script>', ' OVERWRITTEN -->',           $filter2);
$filter4 = str_replace('src="http://example.com', 'src="',        $filter3);
$output = str_replace('<p>Some Text</p>', '<p>Something Else</p>',$filter4);

echo $output;

Is it a better and cleaner way of replacing multiple different words at once than I have done? I'm not sure about extra delay that PHP has to handle with such mess

Upvotes: 1

Views: 40

Answers (1)

Praveen Kumar Purushothaman
Praveen Kumar Purushothaman

Reputation: 167192

Yep, you can do it by sending in arrays:

$results = file_get_contents('https://example.com/');

$output = str_replace(
  array('https://example.com', '<script', '</script>', 'src="http://example.com', '<p>Some Text</p>'),
  array('index.php', '<!-- OVERWRITTEN ', ' OVERWRITTEN -->', 'src="', '<p>Something Else</p>'),
  $results
);

echo $output;

For clarity, the replace code is:

$output = str_replace(
  array('https://example.com', '<script',           '</script>',        'src="http://example.com', '<p>Some Text</p>'),
  array('index.php',           '<!-- OVERWRITTEN ', ' OVERWRITTEN -->', 'src="',                   '<p>Something Else</p>'),
  $results
);

Upvotes: 1

Related Questions