このコードが機能しない理由がわかりません:
<?php
$text = "<a><li><ul><ol>Hello";
$tags = array('a', 'li', 'ul', 'ol');
$tagcount = count($tags);
$i = 0;
while ($i < $tagcount) {
$opentag = "<".$tags[$i];
$closetag = "</".$tags[$i].">";
if (stripos($text, $opentag)) {
$lastopen = strripos($text, $opentag);
$lastclose = strripos($text, $closetag);
if ($lastopen > $lastclose) {
$text = substr($text, 0, $lastopen);
echo $tags[$i] . " tag was open. ";
} else {
echo $tags[$i] . " tag was closed. ";
} else {
echo $tags[$i] . " tag was not open. ";
$i++;
}
?>
少なくとも、$tags 配列内のすべてのタグが開いていることを示す必要があります。タグが開いていないことを確認するために substr() を使用することを意図していますが、機能していません。これを実行すると、次のようになります。
タグが開いていませんでした。liタグが開いていました。ul タグが開いていませんでした。ol タグが開いていませんでした。
それらはすべて開いているにもかかわらずです。どんな助けでも大歓迎です。