<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Z115 - konwersja typów</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
<header>
    <h1>Zadanie 115</h1>
    <h2>Autor: Jakub Grzegorczyk</h2>
</header>
<div class="block">
    <p>Napisz program, który sprawdza, czy podana wartość z formularza da się przekonwertować na liczbę, i określa, czy jest to liczba całkowita, rzeczywista czy wartość szesnastkowa. Program powinien obsługiwać przecinek jako separator dziesiętny oraz ujemne liczby szesnastkowe (np. -0xff). Wynik ma być wyświetlony w czytelny sposób, pokazując zarówno wprowadzoną wartość, jak i rezultat jej analizy.</p>
    <h3>Wskazówki dla ucznia:</h3>
    <ul>
        <li>Użyj funkcji is_numeric(), aby sprawdzić, czy wartość jest numeryczna.</li>
        <li>Zamień przecinek na kropkę za pomocą str_replace(), ponieważ PHP rozpoznaje liczby zmiennoprzecinkowe z kropką (np. 0.34).</li>
        <li>Do konwersji liczb szesnastkowych (np. 0xff lub -0xff) możesz użyć intval() z podstawą 16, ale zwróć uwagę na znak minusa.</li>
        <li>Sprawdź typ liczby po konwersji za pomocą is_int() i is_float().</li>
        <li>Zabezpiecz dane wejściowe używając htmlspecialchars(), aby uniknąć problemów z XSS.</li>
    </ul>
</div>
<div class="block">
    <form action="index.php" method="post">
        <label for="number">Podaj wartość: </label><br>
        <input type="text" name="number" id="number"><br><br>
        <button type="submit">Sprawdź</button>
        <br>
    </form>
</div>
<div class="block">
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $input = htmlspecialchars($_POST['number']);
        $input = str_replace(',', '.', $input);

        $result = "Wartość: $input<br>";

        if (is_numeric($input)) {
            if (is_int(0 + $input)) {
                $result .= "Jest to liczba całkowita.<br>";
            } elseif (is_float(0 + $input)) {
                $result .= "Jest to liczba rzeczywista.<br>";
            }

        } elseif (str_starts_with($input, "0x") || str_starts_with($input, "-0x")) {
            $hexValue = hexdec($input);
            $result .= "Jest to liczba szesnastkowa. Wartość dziesiętna: $hexValue<br>";
        } else {
            $result .= "Nie można przekonwertować na liczbę.<br>";
        }

        echo $result;
    }
    ?>
</div>
</body>
</html>