Ten roztwór używa wyrażenia regularnego. Pozwolę ci zdecydować, czy jest to skomplikowane, czy nie.
$out = preg_replace("/(?<=^|>).*?(?=<|$)/s", "", $in);
Złammy go:
(?<=^|>)
: A lookbehind. Nie pasuje, ale wciąż musi tam być. Pasuje zarówno początek sznurka (^
) lub dosłownym >
.
.*?
: Zapałki nic (s
modyfikatora umożliwia to przełamane). Znak zapytania sprawia, że jest leniwy - pasuje do jak najmniej znaków.
(?=<|$)
: a uprzedzona. Mecze albo dosłowne <
lub na końcu łańcucha ($
).
ten został zastąpiony przez nic (""
), tak, że wszystko między >
i <
zostanie usunięty. Robocze demo można zobaczyć here. Nie zachowuje białych znaków, więc kończy się jedną bardzo długą linią.
EDIT: Jeśli wiesz, że Twój wkład będzie zawsze owinięte w znacznikach HTML można zrobić to nawet prostsze dla siebie, ponieważ nie trzeba myśleć o początku i końcu ciąg bitów:
$out = preg_replace("/>.*?</s", "><", $in);
Ten wariant nie będzie działać dla danych wejściowych z tekstem na początku lub na końcu - na przykład stanie się Hello<b></b>!
.
Użyj parsera DOM. – David
Lub spróbuj tego https://code.google.com/p/phpquery/ –