Как читать строку на php?
PHP отличный язык на котором можно реализовать практически любой алгоритм.
В первом случаи вы можете использовать функцию explode с разделителем в виде пробела, получите массив на выходе ровно в том порядке, в котором идут слова. А дальше обрабатывайте массив как угодно.
Во втором случаи можно так же использовать explode только при переборе массива учитывать начало и конец заголовка, выставлять флаг начала и флаг конца тега.
Все в ваших руках.
Можно регулярки использовать. Я php не знаю, поэтому буду использовать примеры для python, для php должно быть что то похожее. 
Для нахождения нужных слов можно использовать префиксные и постфиксные проверки:
    (?<=<условие>)<выражение> - <выражение> будет соответствовать шаблону только тогда, когда оно идет после выражения, которое соответствует шаблону <условие>.
    (?)<выражение> - аналогично предыдущему, только будет совпадать, если <условие> НЕ будет совпадать.
    (?=<условие>)<выражение> - постфиксное условие, <выражение> будет соответстовать, если после него идет выражение, которое соответствует шаблону <условие>
    (?!<условие>)<выражение> - постфиксное условие с отрицанием
Для удаления есть метод sub(), на самом деле это замена, но кто нам помешает заменять на пустую строку.
Таким образом можно так:your_string = '<p>Ох уж этот php хотя java адский ад лучше уж пусть php</p>'
p = re.compile( '(php)(?=.*java)')
p.sub('', your_string)
Для php вроди бы так будет:$string = "<p>Ох уж этот php хотя java адский ад лучше уж пусть php</p>";
$string = ereg_replace('(php)(?=.*java)', '', $string);
php.net/manual/ru/function.ereg-replace.php