Regex would be more efficient than doing many replaces and validations, which you would have to do before you’re sure that the content is satisfactory. My main concern is that to filter a generic whitespace paragraph you’re going to have to do several replacement calls and multiple validation checks before knowing the paragraph is fine - or try to skip some steps and, in the process, mutilate valid paragraphs.
Or you could just do:
$Content = preg_replace('~\\s?<p>(\\s| )+</p>\\s?~', '', $Content);
Regular Expressions are not as inefficient as people expect them to be. They’re lower level than standard PHP code - (As far as I’m aware) It’s C that’s actually doing that regex replacement. That means that multiple PHP function runs would lag behind a single preg call.
Granted, for some jobs they’re a bit like hammering in a nail with a screwdriver. But for many things they’re much more efficient than basic string functions.