Это решение использует регулярное выражение. Я позволю вам решить, сложна она или нет.
$out = preg_replace("/(?<=^|>).*?(?=<|$)/s", "", $in);
Давайте разбить его:
(?<=^|>)
: 'назад. Совсем не соответствует, но он все еще должен быть там. Соответствует началу строки (^
) или литералу >
.
.*?
: Совпадает ни с чем (s
модификатор делает включение новой строки). Вопросительный знак делает его ленивым - он соответствует как можно меньшему количеству символов.
(?=<|$)
: Взгляд. Соответствует буквам <
или концу строки ($
).
Это заменяется ничем (""
), так что все между >
и <
удаляется. Рабочую демонстрацию можно увидеть here. Он не сохраняет пробелы, поэтому вы получаете одну супер длинную линию.
EDIT: Если вы знаете, что ваш вклад всегда будет обернут в HTML-тегов, которые вы можете сделать это еще проще для себя, так как вы не должны думать о начале и конце строки битов:
$out = preg_replace("/>.*?</s", "><", $in);
Этот вариант не будет работать для ввода с текстом в начале или в конце - например, станет Hello<b></b>!
.
Используйте парсер DOM. – David
Или попробуйте https://code.google.com/p/phpquery/ –