<?php
</span>="color: #FF8000">//error_reporting(E_ALL);

</span>="color: #007700">class </span>="color: #0000BB">SyntaxColour </span>="color: #007700">{
  var </span>="color: #0000BB">$in_php </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_html_comment </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_html_tag </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_html_string </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$html_parsing_arguments </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$html_parsing_param </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$html_existing </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_php_ml_comment </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_php_sl_comment </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_php_string_dq </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
  var </span>="color: #0000BB">$in_php_string_sq </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;

  function </span>="color: #0000BB">processCode</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">) {
    </span>="color: #0000BB">$len </span>="color: #007700">= </span>="color: #0000BB">strlen</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">);
    do {
      </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">output_char </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">; </span>="color: #FF8000">// !?!
      </span>="color: #0000BB">$ofset_increment </span>="color: #007700">= </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">process</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">);

      if (</span>="color: #0000BB">$ofset_increment </span>="color: #007700">== </span>="color: #0000BB">0</span>="color: #007700">) {
        </span>="color: #0000BB">$ca </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
        echo </span>="color: #DD0000">"$ca"</span>="color: #007700">;
        </span>="color: #0000BB">$ofs </span>="color: #007700">+= </span>="color: #0000BB">1</span>="color: #007700">;
      }
      </span>="color: #0000BB">$ofs </span>="color: #007700">+= </span>="color: #0000BB">$ofset_increment</span>="color: #007700">;
    } while (</span>="color: #0000BB">$ofs </span>="color: #007700"><= </span>="color: #0000BB">$len</span>="color: #007700">);
  }

  function </span>="color: #0000BB">process</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">) {
    if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&lt;?"</span>="color: #007700">)) {
      </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
      echo </span>="color: #DD0000">"<SPAN CLASS=\"php_tags\">&lt;?</SPAN><SPAN CLASS=\"php_method\">"</span>="color: #007700">;
      return </span>="color: #0000BB">5</span>="color: #007700">;
    }

    if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php</span>="color: #007700">) { </span>="color: #FF8000">// in PHP...
      </span>="color: #007700">if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"\\"</span>="color: #007700">)) {
        </span>="color: #0000BB">$escaped </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">2</span>="color: #007700">);
        echo </span>="color: #DD0000">"<SPAN CLASS='php_escaped'>$escaped</SPAN>"</span>="color: #007700">;
        return </span>="color: #0000BB">2</span>="color: #007700">;
      }

      if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_sq</span>="color: #007700">) {
        if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_dq</span>="color: #007700">) {
          if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_sl_comment</span>="color: #007700">) { </span>="color: #FF8000">// in_php_sl_comment
            </span>="color: #007700">if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">""</span>="color: #007700">)) {
              echo </span>="color: #DD0000">"</SPAN>"</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_sl_comment </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
              return </span>="color: #0000BB">0</span>="color: #007700">;
            }
          } else { </span>="color: #FF8000">// !in_php_sl_comment
            </span>="color: #007700">if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"//"</span>="color: #007700">)) {
              echo </span>="color: #DD0000">"<SPAN CLASS='php_comment'>//"</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_sl_comment </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
              return </span>="color: #0000BB">2</span>="color: #007700">;

            }
            if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_ml_comment</span>="color: #007700">) { </span>="color: #FF8000">// in_php_ml_comment
              </span>="color: #007700">if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"*/"</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"*/</SPAN>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_ml_comment </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                return </span>="color: #0000BB">2</span>="color: #007700">;
              }
            } else { </span>="color: #FF8000">// !in_php_ml_comment
              </span>="color: #007700">if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"/*"</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_comment'>/*"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_ml_comment </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
                return </span>="color: #0000BB">2</span>="color: #007700">;
              }
            }
          }
        }
      }

      if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_ml_comment</span>="color: #007700">) { </span>="color: #FF8000">// !in_php_ml_comment
        </span>="color: #007700">if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_sl_comment</span>="color: #007700">) { </span>="color: #FF8000">// !in_php_sl_comment
          </span>="color: #0000BB">$char </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
          if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_sq</span>="color: #007700">) {
            if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"\""</span>="color: #007700">)) {
              if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_dq</span>="color: #007700">) {
                echo </span>="color: #DD0000">"\"</SPAN>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_dq </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              } else {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_string'>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_dq </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
                return </span>="color: #0000BB">0</span>="color: #007700">;
              }
            }
          }

          if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_dq</span>="color: #007700">) {
            if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"'"</span>="color: #007700">)) {
              if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_sq</span>="color: #007700">) {
                echo </span>="color: #DD0000">"'</SPAN>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_sq </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              } else {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_string'>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_sq </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
                return </span>="color: #0000BB">0</span>="color: #007700">;
              }
            }
          }

          if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_sq</span>="color: #007700">) {
            if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php_string_dq</span>="color: #007700">) {
              if (</span>="color: #0000BB">isABracket</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_brackets'>$char</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">isABrace</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_braces'>$char</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">isOperators</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_operate'>$char</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">isPunctuation</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_punct'>$char</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&gt;"</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_punct'>&gt;</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">4</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&lt;"</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='php_punct'>&lt;</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">4</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">isANumber</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">)) { </span>="color: #FF8000">// +
                </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">returnLengthOfTheNumberAt</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">);
                </span>="color: #0000BB">$number </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">$length</span>="color: #007700">);
                </span>="color: #0000BB">$number_raw </span>="color: #007700">= </span>="color: #0000BB">$number</span>="color: #007700">;
                if (</span>="color: #0000BB">isPlusOrMinus</span>="color: #007700">(</span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$number_raw</span>="color: #007700">, </span>="color: #0000BB">0</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">))) {
                  </span>="color: #0000BB">$number_raw </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$number_raw</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
                }
                if (</span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$number_raw</span>="color: #007700">, </span>="color: #0000BB">0</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">) == </span>="color: #DD0000">"."</span>="color: #007700">) {
                  </span>="color: #0000BB">$number_raw </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$number_raw</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
                }

                if (</span>="color: #0000BB">isAPositiveNumber</span>="color: #007700">(</span>="color: #0000BB">$number_raw</span>="color: #007700">)) {
                  echo </span>="color: #DD0000">"<SPAN CLASS='php_number'>$number</SPAN>"</span>="color: #007700">;
                  return </span>="color: #0000BB">$length</span>="color: #007700">;
                }
              }

              if (!</span>="color: #0000BB">isATerminator</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">)) {
                if (</span>="color: #0000BB">isATerminator</span>="color: #007700">(</span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs </span>="color: #007700">-</span>="color: #0000BB">1</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">))) {
                  </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">returnLengthOfTheVariableAt</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">);
                  </span>="color: #0000BB">$keyword </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">$length</span>="color: #007700">);
                  if (</span>="color: #0000BB">isAKeyword</span>="color: #007700">(</span>="color: #0000BB">$keyword</span>="color: #007700">)) {
                    echo </span>="color: #DD0000">"<SPAN CLASS='php_keyword'>$keyword</SPAN>"</span>="color: #007700">;
                    return </span>="color: #0000BB">$length</span>="color: #007700">;
                  } else
                    if (</span>="color: #0000BB">isAConstant</span>="color: #007700">(</span>="color: #0000BB">$keyword</span>="color: #007700">)) {
                      echo </span>="color: #DD0000">"<SPAN CLASS='php_const'>$keyword</SPAN>"</span>="color: #007700">;
                      return </span>="color: #0000BB">$length</span>="color: #007700">;
                    }
                }
              }
            }
          }

          if (</span>="color: #0000BB">$char </span>="color: #007700">== </span>="color: #DD0000">"$"</span>="color: #007700">) {
            </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">returnLengthOfTheVariableAt</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">);
            </span>="color: #0000BB">$var </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">$length</span>="color: #007700">);
            echo </span>="color: #DD0000">"<SPAN CLASS='php_var'>$var</SPAN>"</span>="color: #007700">;
            return </span>="color: #0000BB">$length</span>="color: #007700">;
          }
        }
      }
    } else { </span>="color: #FF8000">// in HTML...
      </span>="color: #007700">if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_existing</span>="color: #007700">) {
        if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">">"</span>="color: #007700">)) {
          </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_existing </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
        }
      } else {
        if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"<"</span>="color: #007700">)) {
          </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_existing </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
        }

        if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&lt;!--"</span>="color: #007700">)) {
          echo </span>="color: #DD0000">"<SPAN CLASS='html_comment'>&lt;!--"</span>="color: #007700">;
          </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_comment </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
          return </span>="color: #0000BB">7</span>="color: #007700">;
        }

        if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_comment </span>="color: #007700">== </span>="color: #0000BB">false</span>="color: #007700">) {
          if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&lt;/"</span>="color: #007700">)) { </span>="color: #FF8000">// </
            </span>="color: #007700">echo </span>="color: #DD0000">"<SPAN CLASS='html_angle'>&lt;<SPAN CLASS='html_tag_clos'>/"</span>="color: #007700">;
            </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_tag </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
            </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
            </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
            return </span>="color: #0000BB">5</span>="color: #007700">;
          } else
            if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&lt;"</span>="color: #007700">)) { </span>="color: #FF8000">// <
              </span>="color: #007700">echo </span>="color: #DD0000">"<SPAN CLASS='html_angle'>&lt;<SPAN CLASS='html_tag_open'>"</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_tag </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
              return </span>="color: #0000BB">4</span>="color: #007700">;
            }

          if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&gt;"</span>="color: #007700">)) { </span>="color: #FF8000">// >
            </span>="color: #007700">if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments</span>="color: #007700">) {
              echo </span>="color: #DD0000">"</SPAN>"</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
            }
            if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param</span>="color: #007700">) {
              echo </span>="color: #DD0000">"</SPAN>"</span>="color: #007700">;
              </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
            }
            echo </span>="color: #DD0000">"</SPAN>&gt;</SPAN>"</span>="color: #007700">;
            </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_tag </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
            return </span>="color: #0000BB">4</span>="color: #007700">;
          }

          if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_tag </span>="color: #007700">== </span>="color: #0000BB">true</span>="color: #007700">) {
            if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_string</span>="color: #007700">) {
              if (!</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param</span>="color: #007700">) {
                if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">" "</span>="color: #007700">)) { </span>="color: #FF8000">// " "
                  </span>="color: #007700">if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments</span>="color: #007700">) {
                    echo </span>="color: #DD0000">"</SPAN>"</span>="color: #007700">;
                    </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                  }

                  echo </span>="color: #DD0000">"<SPAN CLASS='html_param'>"</span>="color: #007700">;
                  </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
                }
              }

              if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"="</span>="color: #007700">)) { </span>="color: #FF8000">// =
                </span>="color: #007700">if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param</span>="color: #007700">) {
                  echo </span>="color: #DD0000">"</SPAN>"</span>="color: #007700">;
                  </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_param </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                }

                echo </span>="color: #DD0000">"<SPAN CLASS='html_equals'>=</SPAN><SPAN CLASS='html_argument'>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
                return </span>="color: #0000BB">1</span>="color: #007700">;
              }

              if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">html_parsing_arguments</span>="color: #007700">) { </span>="color: #FF8000">// +
                </span>="color: #0000BB">$digit </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
                if (</span>="color: #0000BB">isANumber</span>="color: #007700">(</span>="color: #0000BB">$digit</span>="color: #007700">)) { </span>="color: #FF8000">// +
                  </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">returnLengthOfTheNumberAt</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">);
                  </span>="color: #0000BB">$number </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">$length</span>="color: #007700">);
                  echo </span>="color: #DD0000">"<SPAN CLASS='html_number'>$number</SPAN>"</span>="color: #007700">;
                  return </span>="color: #0000BB">$length</span>="color: #007700">;
                }
              }

              if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"'"</span>="color: #007700">) || </span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"\""</span>="color: #007700">)) {
                echo </span>="color: #DD0000">"<SPAN CLASS='html_string'>"</span>="color: #007700">;
                </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_string </span>="color: #007700">= </span>="color: #0000BB">true</span>="color: #007700">;
              }
            } else
              if (</span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_string</span>="color: #007700">) {
                if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"\""</span>="color: #007700">)) {
                  echo </span>="color: #DD0000">"\"</SPAN>"</span>="color: #007700">;
                  </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_string </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                  return </span>="color: #0000BB">1</span>="color: #007700">;
                }
                if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"'"</span>="color: #007700">)) {
                  echo </span>="color: #DD0000">"'</SPAN>"</span>="color: #007700">;
                  </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_string </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
                  return </span>="color: #0000BB">1</span>="color: #007700">;
                }
              }
          } else { </span>="color: #FF8000">// not in HTML tag...
            </span>="color: #007700">if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"&amp;"</span>="color: #007700">)) {
              </span>="color: #0000BB">$pentity </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs </span>="color: #007700">+</span>="color: #0000BB">5</span>="color: #007700">, </span>="color: #0000BB">8</span>="color: #007700">);
              </span>="color: #0000BB">$peoend </span>="color: #007700">= </span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #0000BB">$pentity</span>="color: #007700">, </span>="color: #DD0000">";"</span>="color: #007700">);
              if (!(</span>="color: #0000BB">peoend </span>="color: #007700">== </span>="color: #0000BB">false</span>="color: #007700">)) {
                </span>="color: #0000BB">$aentity </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs </span>="color: #007700">+</span>="color: #0000BB">5</span>="color: #007700">, </span>="color: #0000BB">$peoend</span>="color: #007700">);
                echo </span>="color: #DD0000">"<SPAN CLASS='html_entity'>&amp;$aentity;</SPAN>"</span>="color: #007700">;
                return </span>="color: #0000BB">$peoend </span>="color: #007700">+</span>="color: #0000BB">6</span>="color: #007700">;
              }
            }
          }
        }

        if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"--&gt;"</span>="color: #007700">)) {
          echo </span>="color: #DD0000">"--&gt;</SPAN>"</span>="color: #007700">;
          </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_html_comment </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
          return </span>="color: #0000BB">6</span>="color: #007700">;
        }
      }
    }

    if (</span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #DD0000">"?&gt;"</span>="color: #007700">)) {
      </span>="color: #0000BB">$this </span>="color: #007700">-> </span>="color: #0000BB">in_php </span>="color: #007700">= </span>="color: #0000BB">false</span>="color: #007700">;
      echo </span>="color: #DD0000">"</SPAN><SPAN CLASS=\"php_tags\">?&gt;</SPAN>"</span>="color: #007700">;
      return </span>="color: #0000BB">5</span>="color: #007700">;
    }

    return </span>="color: #0000BB">0</span>="color: #007700">;
  }
}

</span>="color: #0000BB">$URL </span>="color: #007700">= </span>="color: #0000BB">$_GET</span>="color: #007700">[</span>="color: #DD0000">'url'</span>="color: #007700">];

if (</span>="color: #0000BB">$URL </span>="color: #007700">!= </span>="color: #0000BB">null</span>="color: #007700">) {
  </span>="color: #0000BB">colourURL</span>="color: #007700">(</span>="color: #0000BB">$URL</span>="color: #007700">);
}

</span>="color: #0000BB">$path </span>="color: #007700">= </span>="color: #0000BB">$_GET</span>="color: #007700">[</span>="color: #DD0000">'file'</span>="color: #007700">];
if (</span>="color: #0000BB">$path </span>="color: #007700">!= </span>="color: #0000BB">null</span>="color: #007700">) {
  </span>="color: #0000BB">colourFile</span>="color: #007700">(</span>="color: #DD0000">"$path"</span>="color: #007700">);
}

function </span>="color: #0000BB">setUpStyles</span>="color: #007700">(</span>="color: #0000BB">$title</span>="color: #007700">, </span>="color: #0000BB">$background </span>="color: #007700">= </span>="color: #DD0000">'#000000'</span>="color: #007700">, </span>="color: #0000BB">$php_method </span>="color: #007700">= </span>="color: #DD0000">'#F0F0C0'</span>="color: #007700">, </span>="color: #0000BB">$php_keyword </span>="color: #007700">= </span>="color: #DD0000">'#FFFF00'</span>="color: #007700">, </span>="color: #0000BB">$php_string </span>="color: #007700">= </span>="color: #DD0000">'#A0A0FF'</span>="color: #007700">, </span>="color: #0000BB">$php_comment </span>="color: #007700">= </span>="color: #DD0000">'#40FF40'</span>="color: #007700">, </span>="color: #0000BB">$php_tags_bg </span>="color: #007700">= </span>="color: #DD0000">'#FFFF00'</span>="color: #007700">, </span>="color: #0000BB">$php_tags </span>="color: #007700">= </span>="color: #DD0000">'#000080'</span>="color: #007700">, </span>="color: #0000BB">$php_punct </span>="color: #007700">= </span>="color: #DD0000">'#FFD000'</span>="color: #007700">, </span>="color: #0000BB">$php_brackets </span>="color: #007700">= </span>="color: #DD0000">'#FFD0D0'</span>="color: #007700">, </span>="color: #0000BB">$php_braces </span>="color: #007700">= </span>="color: #DD0000">'#FF9090'</span>="color: #007700">, </span>="color: #0000BB">$php_escaped </span>="color: #007700">= </span>="color: #DD0000">'#F08060'</span>="color: #007700">, </span>="color: #0000BB">$php_operate </span>="color: #007700">= </span>="color: #DD0000">'#C0A0E0'</span>="color: #007700">, </span>="color: #0000BB">$php_number </span>="color: #007700">= </span>="color: #DD0000">'#FFB090'</span>="color: #007700">, </span>="color: #0000BB">$php_var </span>="color: #007700">= </span>="color: #DD0000">'#A0D0F0'</span>="color: #007700">, </span>="color: #0000BB">$php_const </span>="color: #007700">= </span>="color: #DD0000">'#20E0E0'</span>="color: #007700">, </span>="color: #0000BB">$html_text </span>="color: #007700">= </span>="color: #DD0000">'#FFFFFF'</span>="color: #007700">, </span>="color: #0000BB">$html_comment </span>="color: #007700">= </span>="color: #DD0000">'#40FF40'</span>="color: #007700">, </span>="color: #0000BB">$html_equals </span>="color: #007700">= </span>="color: #DD0000">'#F0F0C0'</span>="color: #007700">, </span>="color: #0000BB">$html_string </span>="color: #007700">= </span>="color: #DD0000">'#C0C0FF'</span>="color: #007700">, </span>="color: #0000BB">$html_number </span>="color: #007700">= </span>="color: #DD0000">'#F0C000'</span>="color: #007700">, </span>="color: #0000BB">$html_entity </span>="color: #007700">= </span>="color: #DD0000">'#FF8060'</span>="color: #007700">, </span>="color: #0000BB">$html_argument </span>="color: #007700">= </span>="color: #DD0000">'#C0E0C0'</span>="color: #007700">, </span>="color: #0000BB">$html_param </span>="color: #007700">= </span>="color: #DD0000">'#E0C0C0'</span>="color: #007700">, </span>="color: #0000BB">$html_angle </span>="color: #007700">= </span>="color: #DD0000">'#D0D020'</span>="color: #007700">, </span>="color: #0000BB">$html_tag_open </span>="color: #007700">= </span>="color: #DD0000">'#FFE0A0'</span>="color: #007700">, </span>="color: #0000BB">$html_tag_clos </span>="color: #007700">= </span>="color: #DD0000">'#E0A0E0'</span>="color: #007700">) {
  echo </span>="color: #DD0000">"<HTML><HEAD><TITLE>Source for $title</TITLE><style>\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">"body { color: $html_text; background-color: $background; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_method   { color: $php_method; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_keyword  { color: $php_keyword; font-weight: bold;}\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_string   { color: $php_string; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_comment  { color: $php_comment; font-style: italic; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_tags     { color: $php_tags; background-color: $php_tags_bg; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_punct    { color: $php_punct; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_brackets { color: $php_brackets; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_braces   { color: $php_braces; }\n"</span>="color: #007700">;

  echo </span>="color: #DD0000">".source span.php_escaped  { color: $php_escaped; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_operate  { color: $php_operate; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_number   { color: $php_number; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_var      { color: $php_var; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.php_const    { color: $php_const; font-weight: bold; }\n"</span>="color: #007700">;

  echo </span>="color: #DD0000">".source span.html_text    { color: $html_text; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_equals  { color: $html_equals; font-weight: normal ; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_string  { color: $html_string; font-weight: normal ; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_number  { color: $html_number; font-weight: normal ; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_entity  { color: $html_entity; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_argument{ color: $html_argument; font-weight: bold; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_param   { color: $html_param; font-weight: bold; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_angle   { color: $html_angle; font-weight: bold; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_tag_open{ color: $html_tag_open; font-weight: bold; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_tag_clos{ color: $html_tag_clos; font-weight: bold; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">".source span.html_comment { color: $html_comment; font-style: italic; }\n"</span>="color: #007700">;
  echo </span>="color: #DD0000">"</style></HEAD><BODY>"</span>="color: #007700">;
}

function </span>="color: #0000BB">colourFile</span>="color: #007700">(</span>="color: #0000BB">$path</span>="color: #007700">) {
  </span>="color: #0000BB">$chars_ok </span>="color: #007700">= </span>="color: #0000BB">ereg</span>="color: #007700">(</span>="color: #DD0000">"([^a-zA-Z0-9/ :._-])|(\../|\./)"</span>="color: #007700">, </span>="color: #0000BB">$path</span>="color: #007700">);
  if (</span>="color: #0000BB">$chars_ok</span>="color: #007700">) {
    die(</span>="color: #DD0000">"Path contains forbidden characters or sequence"</span>="color: #007700">);
  }

  </span>="color: #0000BB">$file </span>="color: #007700">= </span>="color: #DD0000">"../"</span>="color: #007700">.</span>="color: #0000BB">$path</span>="color: #007700">;

  if (!isSet(</span>="color: #0000BB">$file</span>="color: #007700">)) {
    die(</span>="color: #DD0000">"Error: File not found"</span>="color: #007700">);
  } else {
    </span>="color: #0000BB">$source </span>="color: #007700">= </span>="color: #0000BB">highlight_file</span>="color: #007700">(</span>="color: #0000BB">$file</span>="color: #007700">, </span>="color: #0000BB">true</span>="color: #007700">);
    </span>="color: #0000BB">output</span>="color: #007700">(</span>="color: #0000BB">$path</span>="color: #007700">, </span>="color: #0000BB">$source</span>="color: #007700">);
  }
}

function </span>="color: #0000BB">colourURL</span>="color: #007700">(</span>="color: #0000BB">$url</span>="color: #007700">) {
  </span>="color: #0000BB">$legal </span>="color: #007700">= </span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #0000BB">$url</span>="color: #007700">, </span>="color: #DD0000">"http"</span>="color: #007700">);
  if ((</span>="color: #0000BB">$legal </span>="color: #007700">=== </span>="color: #0000BB">false</span>="color: #007700">) || (</span>="color: #0000BB">$legal </span>="color: #007700">> </span>="color: #0000BB">0</span>="color: #007700">)) {
    die(</span>="color: #DD0000">"URLs must start with 'http'"</span>="color: #007700">);
  }

  </span>="color: #0000BB">$url_chars_ok </span>="color: #007700">= </span>="color: #0000BB">ereg</span>="color: #007700">(</span>="color: #DD0000">"([^a-zA-Z0-9/ :._-])|(\../|\./)"</span>="color: #007700">, </span>="color: #0000BB">$url</span>="color: #007700">);
  if (</span>="color: #0000BB">$url_chars_ok</span>="color: #007700">) {
    die(</span>="color: #DD0000">"URL contains forbidden characters or sequence"</span>="color: #007700">);
  }

  </span>="color: #0000BB">$handle </span>="color: #007700">= </span>="color: #0000BB">fopen</span>="color: #007700">(</span>="color: #0000BB">$url</span>="color: #007700">, </span>="color: #DD0000">"r"</span>="color: #007700">);
  if (</span>="color: #0000BB">$handle </span>="color: #007700">== </span>="color: #0000BB">null</span>="color: #007700">) {
    die(</span>="color: #DD0000">"Error: The specified URL was not found"</span>="color: #007700">);
  }

  </span>="color: #0000BB">$file </span>="color: #007700">= </span>="color: #0000BB">file</span>="color: #007700">(</span>="color: #0000BB">$url</span>="color: #007700">);
  </span>="color: #0000BB">$f_contents </span>="color: #007700">= </span>="color: #0000BB">implode</span>="color: #007700">(</span>="color: #DD0000">""</span>="color: #007700">, </span>="color: #0000BB">file</span>="color: #007700">(</span>="color: #0000BB">$url</span>="color: #007700">));
  </span>="color: #0000BB">$source </span>="color: #007700">= </span>="color: #0000BB">highlight_string</span>="color: #007700">(</span>="color: #0000BB">$f_contents</span>="color: #007700">, </span>="color: #0000BB">true</span>="color: #007700">);
  </span>="color: #0000BB">fclose</span>="color: #007700">(</span>="color: #0000BB">$handle</span>="color: #007700">);

  </span>="color: #0000BB">output</span>="color: #007700">(</span>="color: #0000BB">$url</span>="color: #007700">, </span>="color: #0000BB">$source</span>="color: #007700">);
}

function </span>="color: #0000BB">output</span>="color: #007700">(</span>="color: #0000BB">$title</span>="color: #007700">, </span>="color: #0000BB">$source</span>="color: #007700">) {
  </span>="color: #0000BB">setUpStyles</span>="color: #007700">(</span>="color: #0000BB">$title</span>="color: #007700">);
  </span>="color: #0000BB">$source </span>="color: #007700">= </span>="color: #0000BB">replaceCode</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">);
  </span>="color: #0000BB">startPrintingCode</span>="color: #007700">();
  </span>="color: #0000BB">$sc </span>="color: #007700">= new </span>="color: #0000BB">SyntaxColour</span>="color: #007700">();

  </span>="color: #0000BB">$sc </span>="color: #007700">-> </span>="color: #0000BB">processCode</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">);
  </span>="color: #0000BB">endPrintingCode</span>="color: #007700">();
}

function </span>="color: #0000BB">startPrintingCode</span>="color: #007700">() {
  echo </span>="color: #DD0000">'<PRE CLASS="source">'</span>="color: #007700">;
}

function </span>="color: #0000BB">endPrintingCode</span>="color: #007700">() {
  echo </span>="color: #DD0000">'</PRE>'</span>="color: #007700">;
  echo </span>="color: #DD0000">'</BODY>'</span>="color: #007700">;
  echo </span>="color: #DD0000">'</HTML>'</span>="color: #007700">;
}

function </span>="color: #0000BB">replaceCode</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">) {
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">0</span>="color: #007700">] = </span>="color: #DD0000">'<font color="'</span>="color: #007700">.</span>="color: #0000BB">ini_get</span>="color: #007700">(</span>="color: #DD0000">'highlight.html'</span>="color: #007700">).</span>="color: #DD0000">'">'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">1</span>="color: #007700">] = </span>="color: #DD0000">'<font color="'</span>="color: #007700">.</span>="color: #0000BB">ini_get</span>="color: #007700">(</span>="color: #DD0000">'highlight.default'</span>="color: #007700">).</span>="color: #DD0000">'">'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">2</span>="color: #007700">] = </span>="color: #DD0000">'<font color="'</span>="color: #007700">.</span>="color: #0000BB">ini_get</span>="color: #007700">(</span>="color: #DD0000">'highlight.keyword'</span>="color: #007700">).</span>="color: #DD0000">'">'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">3</span>="color: #007700">] = </span>="color: #DD0000">'<font color="'</span>="color: #007700">.</span>="color: #0000BB">ini_get</span>="color: #007700">(</span>="color: #DD0000">'highlight.string'</span>="color: #007700">).</span>="color: #DD0000">'">'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">4</span>="color: #007700">] = </span>="color: #DD0000">'<font color="'</span>="color: #007700">.</span>="color: #0000BB">ini_get</span>="color: #007700">(</span>="color: #DD0000">'highlight.comment'</span>="color: #007700">).</span>="color: #DD0000">'">'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">5</span>="color: #007700">] = </span>="color: #DD0000">'</font>'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">6</span>="color: #007700">] = </span>="color: #DD0000">'&nbsp;'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">7</span>="color: #007700">] = </span>="color: #DD0000">'<br />'</span>="color: #007700">;
  </span>="color: #0000BB">$search</span>="color: #007700">[</span>="color: #0000BB">8</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;

  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">0</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">1</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">2</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">3</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">4</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">5</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">6</span>="color: #007700">] = </span>="color: #DD0000">' '</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">7</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;
  </span>="color: #0000BB">$replace</span>="color: #007700">[</span>="color: #0000BB">8</span>="color: #007700">] = </span>="color: #DD0000">''</span>="color: #007700">;

  return </span>="color: #0000BB">str_replace</span>="color: #007700">(</span>="color: #0000BB">$search</span>="color: #007700">, </span>="color: #0000BB">$replace</span>="color: #007700">, </span>="color: #0000BB">$source</span>="color: #007700">);
}

function </span>="color: #0000BB">match</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">$string</span>="color: #007700">) {
  </span>="color: #0000BB">$len </span>="color: #007700">= </span>="color: #0000BB">strlen</span>="color: #007700">(</span>="color: #0000BB">$string</span>="color: #007700">);

  if (</span>="color: #0000BB">strlen</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">) < </span>="color: #0000BB">$ofs </span>="color: #007700">+ </span>="color: #0000BB">$len</span>="color: #007700">) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  </span>="color: #0000BB">$slice </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">, </span>="color: #0000BB">$len</span>="color: #007700">);

  return (</span>="color: #0000BB">$string </span>="color: #007700">== </span>="color: #0000BB">$slice</span>="color: #007700">);
}

function </span>="color: #0000BB">isANumber</span>="color: #007700">(</span>="color: #0000BB">$digit</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"0123456789+-%"</span>="color: #007700">, </span>="color: #0000BB">$digit</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isADigitOrADot</span>="color: #007700">(</span>="color: #0000BB">$digit</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"0123456789."</span>="color: #007700">, </span>="color: #0000BB">$digit</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isPunctuation</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">".,:;"</span>="color: #007700">, </span>="color: #0000BB">$char</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isOperators</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"!=|*+-/"</span>="color: #007700">, </span>="color: #0000BB">$char</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isATerminator</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">) {
  if (</span>="color: #0000BB">$char </span>="color: #007700">< </span>="color: #DD0000">"0"</span>="color: #007700">) {
    return </span>="color: #0000BB">true</span>="color: #007700">;
  }

  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"=[]{}|`;?*/<>&$"</span>="color: #007700">, </span>="color: #0000BB">$char</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isABracket</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"[]()"</span>="color: #007700">, </span>="color: #0000BB">$char</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isABrace</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"{}"</span>="color: #007700">, </span>="color: #0000BB">$char</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isPlusOrMinus</span>="color: #007700">(</span>="color: #0000BB">$char</span>="color: #007700">) {
  if ((</span>="color: #0000BB">strpos</span>="color: #007700">(</span>="color: #DD0000">"-+"</span>="color: #007700">, </span>="color: #0000BB">$char</span>="color: #007700">) == </span>="color: #0000BB">false</span>="color: #007700">)) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">isAPositiveNumber</span>="color: #007700">(</span>="color: #0000BB">$number</span>="color: #007700">) {
  </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">strlen</span>="color: #007700">(</span>="color: #0000BB">$number</span>="color: #007700">);
  if (</span>="color: #0000BB">$length </span>="color: #007700">< </span>="color: #0000BB">1</span>="color: #007700">) {
    return </span>="color: #0000BB">false</span>="color: #007700">;
  }

  for (</span>="color: #0000BB">$i </span>="color: #007700">= </span>="color: #0000BB">0</span>="color: #007700">; </span>="color: #0000BB">$i </span>="color: #007700">< </span>="color: #0000BB">$length</span>="color: #007700">; </span>="color: #0000BB">$i </span>="color: #007700">++) {
    if (!</span>="color: #0000BB">isADigitOrADot</span>="color: #007700">(</span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$number</span>="color: #007700">, </span>="color: #0000BB">$i</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">))) {
      return </span>="color: #0000BB">false</span>="color: #007700">;
    }
  }

  return </span>="color: #0000BB">true</span>="color: #007700">;
}

function </span>="color: #0000BB">returnLengthOfTheNumberAt</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">) {
  </span>="color: #0000BB">$index </span>="color: #007700">= </span>="color: #0000BB">0</span>="color: #007700">;
  do {
    </span>="color: #0000BB">$index </span>="color: #007700">= </span>="color: #0000BB">$index </span>="color: #007700">+</span>="color: #0000BB">1</span>="color: #007700">;
    </span>="color: #0000BB">$digit </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs </span>="color: #007700">+ </span>="color: #0000BB">$index</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
  } while (</span>="color: #0000BB">isANumber</span>="color: #007700">(</span>="color: #0000BB">$digit</span>="color: #007700">));

  return </span>="color: #0000BB">$index</span>="color: #007700">;
}

function </span>="color: #0000BB">returnLengthOfTheVariableAt</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs</span>="color: #007700">) {
  </span>="color: #0000BB">$index </span>="color: #007700">= </span>="color: #0000BB">0</span>="color: #007700">;
  do {
    </span>="color: #0000BB">$index </span>="color: #007700">= </span>="color: #0000BB">$index </span>="color: #007700">+</span>="color: #0000BB">1</span>="color: #007700">;
    </span>="color: #0000BB">$digit </span>="color: #007700">= </span>="color: #0000BB">substr</span>="color: #007700">(</span>="color: #0000BB">$source</span>="color: #007700">, </span>="color: #0000BB">$ofs </span>="color: #007700">+ </span>="color: #0000BB">$index</span>="color: #007700">, </span>="color: #0000BB">1</span>="color: #007700">);
  } while (!</span>="color: #0000BB">isATerminator</span>="color: #007700">(</span>="color: #0000BB">$digit</span>="color: #007700">));

  return </span>="color: #0000BB">$index</span>="color: #007700">;
}

function </span>="color: #0000BB">isAKeyword</span>="color: #007700">(</span>="color: #0000BB">$keyword</span>="color: #007700">) {
  </span>="color: #0000BB">$keywords </span>="color: #007700">= array(</span>="color: #DD0000">"and"</span>="color: #007700">, </span>="color: #DD0000">"or"</span>="color: #007700">, </span>="color: #DD0000">"xor"</span>="color: #007700">, </span>="color: #DD0000">"array"</span>="color: #007700">, </span>="color: #DD0000">"as"</span>="color: #007700">, </span>="color: #DD0000">"break"</span>="color: #007700">, </span>="color: #DD0000">"case"</span>="color: #007700">, </span>="color: #DD0000">"cfunction"</span>="color: #007700">, </span>="color: #DD0000">"class"</span>="color: #007700">, </span>="color: #DD0000">"const"</span>="color: #007700">, </span>="color: #DD0000">"continue"</span>="color: #007700">, </span>="color: #DD0000">"declare"</span>="color: #007700">, </span>="color: #DD0000">"default"</span>="color: #007700">, </span>="color: #DD0000">"die"</span>="color: #007700">, </span>="color: #DD0000">"do"</span>="color: #007700">, </span>="color: #DD0000">"echo"</span>="color: #007700">, </span>="color: #DD0000">"else"</span>="color: #007700">, </span>="color: #DD0000">"elseif"</span>="color: #007700">, </span>="color: #DD0000">"empty"</span>="color: #007700">, </span>="color: #DD0000">"enddeclare"</span>="color: #007700">, </span>="color: #DD0000">"endfor"</span>="color: #007700">, </span>="color: #DD0000">"endforeach"</span>="color: #007700">, </span>="color: #DD0000">"endif"</span>="color: #007700">, </span>="color: #DD0000">"endswitch"</span>="color: #007700">, </span>="color: #DD0000">"endwhile"</span>="color: #007700">, </span>="color: #DD0000">"eval"</span>="color: #007700">, </span>="color: #DD0000">"exit"</span>="color: #007700">, </span>="color: #DD0000">"extends"</span>="color: #007700">, </span>="color: #DD0000">"for"</span>="color: #007700">, </span>="color: #DD0000">"foreach"</span>="color: #007700">, </span>="color: #DD0000">"function"</span>="color: #007700">, </span>="color: #DD0000">"global"</span>="color: #007700">, </span>="color: #DD0000">"if"</span>="color: #007700">, </span>="color: #DD0000">"include"</span>="color: #007700">, </span>="color: #DD0000">"include_once"</span>="color: #007700">, </span>="color: #DD0000">"isset"</span>="color: #007700">, </span>="color: #DD0000">"list"</span>="color: #007700">, </span>="color: #DD0000">"new"</span>="color: #007700">, </span>="color: #DD0000">"old_function"</span>="color: #007700">, </span>="color: #DD0000">"print"</span>="color: #007700">, </span>="color: #DD0000">"require"</span>="color: #007700">, </span>="color: #DD0000">"require_once"</span>="color: #007700">, </span>="color: #DD0000">"return"</span>="color: #007700">, </span>="color: #DD0000">"static"</span>="color: #007700">, </span>="color: #DD0000">"switch"</span>="color: #007700">, </span>="color: #DD0000">"unset"</span>="color: #007700">, </span>="color: #DD0000">"use"</span>="color: #007700">, </span>="color: #DD0000">"var"</span>="color: #007700">, </span>="color: #DD0000">"while"</span>="color: #007700">, </span>="color: #DD0000">"__FUNCTION__"</span>="color: #007700">, </span>="color: #DD0000">"__CLASS__"</span>="color: #007700">, </span>="color: #DD0000">"__FILE__"</span>="color: #007700">, </span>="color: #DD0000">"__LINE__"</span>="color: #007700">);
  </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">sizeof</span>="color: #007700">(</span>="color: #0000BB">$keywords</span>="color: #007700">);
  for (</span>="color: #0000BB">$i </span>="color: #007700">= </span>="color: #0000BB">0</span>="color: #007700">; </span>="color: #0000BB">$i </span>="color: #007700">< </span>="color: #0000BB">$length</span>="color: #007700">; </span>="color: #0000BB">$i </span>="color: #007700">++) {
    if (</span>="color: #0000BB">$keyword </span>="color: #007700">== </span>="color: #0000BB">$keywords</span>="color: #007700">[</span>="color: #0000BB">$i</span>="color: #007700">]) {
      return </span>="color: #0000BB">true</span>="color: #007700">;
    }
  }

  return </span>="color: #0000BB">false</span>="color: #007700">;
}

function </span>="color: #0000BB">isAConstant</span>="color: #007700">(</span>="color: #0000BB">$constant</span>="color: #007700">) {
  </span>="color: #0000BB">$constants </span>="color: #007700">= array(</span>="color: #DD0000">"php"</span>="color: #007700">, </span>="color: #DD0000">"true"</span>="color: #007700">, </span>="color: #DD0000">"false"</span>="color: #007700">, </span>="color: #DD0000">"null"</span>="color: #007700">);
  </span>="color: #0000BB">$length </span>="color: #007700">= </span>="color: #0000BB">sizeof</span>="color: #007700">(</span>="color: #0000BB">$constants</span>="color: #007700">);
  for (</span>="color: #0000BB">$i </span>="color: #007700">= </span>="color: #0000BB">0</span>="color: #007700">; </span>="color: #0000BB">$i </span>="color: #007700">< </span>="color: #0000BB">$length</span>="color: #007700">; </span>="color: #0000BB">$i </span>="color: #007700">++) {
    if (</span>="color: #0000BB">$constant </span>="color: #007700">== </span>="color: #0000BB">$constants</span>="color: #007700">[</span>="color: #0000BB">$i</span>="color: #007700">]) {
      return </span>="color: #0000BB">true</span>="color: #007700">;
    }
  }

  return </span>="color: #0000BB">false</span>="color: #007700">;
}
</span>="color: #0000BB">?>