I use the strip_tags() function but I need to remove some tags (and all of their contents).
for example :
Use a regular expression. Something like this should work:
$tags = array( 'p', 'span');
$text = preg_replace( '#<(' . implode( '|', $tags) . ')>.*?<\/$1>#s', '', $text);
The demo shows it replacing the desired tags with nothing.
Note that you may need to tweak it more, say, to compensate for whitespace within the tags, or other unknowns that your example does not demonstrate.
Here is the regex to use to capture tags with or without attributes:
'#<(' . implode( '|', $tags) . ')(?:[^>]+)?>.*?<\/$1>#s'