views:

52

answers:

2

What's the best way to remove these tags from a string, to prepare it for being passed to eval() ?

for eg. the string can be something like this:

<?php
  echo 'hello world';
  ?>
  Hello Again
  <?php

  echo 'Bye';
?>

Obviously str_replace won't work because the two php tags in the middle need to be there (the the 1st and the last need to be removed)

+1  A: 

Sounds like a bad idea, but if you want the start and end ones removed you could do

$removedPhpWrap = preg_replace('/^<\?php(.*)\?>$/s', '$1', $phpCode);

This should do it (not tested).

Please tell me also why you want to do it, I'm 95% sure there is a better way.

alex
works, thanks :D
Alex
+1 even just for the first clause.
Toby Allen
A: 

Usually, you wouldn't want to pass a function to eval. If you're wishing to just remove the tags, string_replace would do the job just fine, however you might be better off using a regex.

preg_replace(array('/<(\?|\%)\=?(php)?/', '/(\%|\?)>/'), array('',''), $str);

This covers old-asp tags, php short-tags, php echo tags, and normal php tags.

CodeJoust
I think he only wants the start and end ones removed, but I may be wrong.
alex
Yep, I didn't see that. I thought he was having trouble with different kinds of tags.
CodeJoust