anchor.diff:                             "<head></head></body></html>")),
       ok.
   
  +dumb_br_test() ->
  +    %% http://code.google.com/p/mochiweb/issues/detail?id=71
  +    ?assertEqual(
  +       {<<"div">>,[],[{<<"br">>, [], []}, {<<"br">>, [], []}, <<"z">>]},
  +       mochiweb_html:parse("<div><br/><br/>z</br/></br/></div>")),
  +    ?assertEqual(
  +       {<<"div">>,[],[{<<"br">>, [], []}, {<<"br">>, [], []}, <<"z">>]},
  +       mochiweb_html:parse("<div><br><br>z</br/></br/></div>")),
  +    ?assertEqual(
  +       {<<"div">>,[],[{<<"br">>, [], []}, {<<"br">>, [], []}, <<"z">>]},
  +       mochiweb_html:parse("<div><br><br>z</br></br></div>")).
  +
  +
  +php_test() ->
  +    %% http://code.google.com/p/mochiweb/issues/detail?id=71
  +    ?assertEqual(
  +       [{pi, <<"php\n">>}],
  +       mochiweb_html:tokens(
  +         "<?php\n?>")),
  +    ?assertEqual(
  +       {<<"div">>, [], [{pi, <<"php\n">>}]},
  +       mochiweb_html:parse(
  +         "<div><?php\n?></div>")),
  +    ok.
  +
   -endif.
  
positive.code:             tokenize_doctype(B, ?ADV_COL(S, 10));
          <<_:O/binary, "<![CDATA[", _/binary>> ->
              tokenize_cdata(B, ?ADV_COL(S, 9));
          <<_:O/binary, "<?", _/binary>> ->
              {Tag, S1} = tokenize_literal(B, ?ADV_COL(S, 2)),
              {Attrs, S2} = tokenize_attributes(B, S1),
  
negative.code:     to_tokens([{Tag0, R1} | Rest], [T0 | Acc]);
  to_tokens([{Tag0, [T0={comment, _C0} | R1]} | Rest], Acc) ->
      %% Allow {comment, iolist()}
      to_tokens([{Tag0, R1} | Rest], [T0 | Acc]);
  to_tokens([{Tag0, [T0={pi, _S0} | R1]} | Rest], Acc) ->
      %% Allow {pi, binary()}
      to_tokens([{Tag0, R1} | Rest], [T0 | Acc]);
  to_tokens([{Tag0, [T0={pi, _S0, _A0} | R1]} | Rest], Acc) ->
      %% Allow {pi, binary(), list()}
  