フレームワークを使わないと厄介になりますが、勇気は賞賛されます。うまくいけば、これは正しい方向への微調整になるでしょう。
私が考えることができる最も単純な非フレームワークソリューションは、スタックを使用して、ユーザーからの文字列を解析しながらタグをプッシュおよびポップすることです。
擬似コード
userData = getUserData();
stack = array();
loop (line in userData) {
matches = search for "<*>"; // may have multiple on one line
loop (match in matches) {
tagName = getTagNameFrom(match);
if ("/" is not found) {
push tagName on stack;
} else if ("/" is found) {
pop tagName off stack;
// There was an error if the stack is
// empty or the tagName that was popped was not
// the same.
}
}
}
これは決して包括的なものではなく、ここではフレームワークが本当に推奨されますが、少し役立つことを願っています。