Klargjort modul 2 for levering

master
Eirik Th S 2021-08-31 10:00:49 +02:00
parent bb37c5512e
commit 6462e080b1
6 changed files with 57 additions and 29 deletions

View File

@ -25,4 +25,8 @@ hr {
table { table {
margin: 0 auto; margin: 0 auto;
}
input[type=number] {
width: 70px;
} }

View File

@ -13,29 +13,25 @@
<h2>Sjekk av etternavn</h2> <h2>Sjekk av etternavn</h2>
<?php <?php
// Henter etternavn fra GET, eller bruker en standard.
// Lagt inn i en funksjon for enklere bruk senere.
function capitalize($input){
// Den innebygde funksjonen `mb_convert_case` med mode: MB_CASE_TITLE gjør at forbokstaven i hvert ord blir stor, med encodingen UTF-8. Det betyr at den også fungerer med æ, ø og å.
return mb_convert_case($input, MB_CASE_TITLE, "UTF-8");
}
// Henter etternavn fra GET, eller setter et standard.
$etternavn = $_GET['etternavn'] ?? 'kArLsEn'; $etternavn = $_GET['etternavn'] ?? 'kArLsEn';
$fintEtternavn = capitalize($etternavn); // Den innebygde funksjonen `mb_convert_case` med mode: MB_CASE_TITLE gjør at forbokstaven i hvert ord blir stor, med encodingen UTF-8. Det betyr at den også fungerer med æ, ø og å.
$fintEtternavn = mb_convert_case($etternavn, MB_CASE_TITLE, "UTF-8");
// mb_strlen teller tegn med en enkoding. For oss betyr det at den ikke teller våre spesialtegn (æ, ø og å) som 2.
?> ?>
<p>Etternavn: <strong><?=$etternavn;?></strong></p> <p>Etternavn: <strong><?=$etternavn;?></strong></p>
<p>Etternavnet etter det er gjort finere: <strong><?=$fintEtternavn;?></strong></p> <p>Etternavnet etter det er gjort finere: <strong><?=$fintEtternavn;?></strong></p>
<p>Etternavnet er <code><?=mb_strlen($fintEtternavn);?> karakterer langt</code>.</p> <p>Etternavnet er <code><?=mb_strlen($fintEtternavn, "UTF-8");?> karakterer langt</code>.</p>
<br> <br>
<p> <form>
<form> <p>
<input type="text" name="etternavn" value="<?=$etternavn;?>"> <input type="text" name="etternavn" value="<?=$etternavn;?>">
<input type="submit" value="Sjekk navn..."> <input type="submit" value="Sjekk navn...">
</form> </p>
</p> </form>
</div> </div>
</body> </body>

View File

@ -14,6 +14,7 @@
<?php <?php
$input = $_POST['kode'] ?? '<?php denne teksten slettes ?> Hallo <strong>verden</strong>'; $input = $_POST['kode'] ?? '<?php denne teksten slettes ?> Hallo <strong>verden</strong>';
// Hvis setningen er sendt inn fra formen, så gjennomføres funksjonen. For å lett se hvordan funksjonen fungerer.
if(isset($_POST['kode'])){ if(isset($_POST['kode'])){
// Funksjonen strip_tags kutter vekk alt som er inni tags. // Funksjonen strip_tags kutter vekk alt som er inni tags.
$input = strip_tags($input); $input = strip_tags($input);

View File

@ -15,26 +15,33 @@
// Insatt setning eller standard-setningen. // Insatt setning eller standard-setningen.
$setning = $_POST['setning'] ?? 'Thereses familie skulle ha ris til middag. Hun ville heller ha en is å spise.'; $setning = $_POST['setning'] ?? 'Thereses familie skulle ha ris til middag. Hun ville heller ha en is å spise.';
//** Hvor mange ganger 'is' er i setningen **//
$ganger = substr_count($setning, 'is');
//** Hvor mange ganger ordet 'is' finnes i setningen **//
// REGEXP pattern: - det brukes for å enkelt finne ut hvor mange ganger bokstavene is omringet av 'whitespace' er i $setning. // REGEXP pattern: - det brukes for å enkelt finne ut hvor mange ganger bokstavene is omringet av 'whitespace' er i $setning.
$re = '/(?:^|\s)is(?:\s|$)/mi'; $re = '/(?:^|\s)is(?:\s|$)/mi';
// Resultatene puttes i en array $resultater. // Resultatene puttes i en array $resultater.
preg_match_all($re, $setning, $resultater, PREG_SET_ORDER, 0); preg_match_all($re, $setning, $resultater, PREG_SET_ORDER, 0);
// Tell hvor mange resultater som REGEXP-en finner. // Tell hvor mange resultater som REGEXP-en finner.
$ganger = count($resultater); $gangerOrd = count($resultater);
// Hvis det kun er én match så lagres teksten grammatisk riktig. // Hvis det kun er én match skrives tekstene grammatisk riktig.
$gangerStr = $ganger." ganger";
if($ganger == 1){ if($ganger == 1){
$gangerStr = $ganger." gang"; $gangerStr = $ganger." gang";
} }
// ... ellers skrives ganger i flertall.
else { $gangerOrdStr = $gangerOrd." ganger";
$gangerStr = $ganger." ganger"; if($gangerOrd == 1){
$gangerOrdStr = $gangerOrd." gang";
} }
?> ?>
<p>Ved bruk av REGEXP er det ganske greit å finne ut hvor mange ganger et ORD finnes i en setning.</p> <p>Funksjonen <code>substr_count</code> teller hvor mange ganger en setnings-del er i en setning.</p>
<p>Eventuelt ved bruk av REGEXP er det ganske greit å finne ut hvor mange ganger et ORD finnes i en setning.</p>
<form action="index2_3.php" method="POST"> <form action="index2_3.php" method="POST">
<p> <p>
<textarea name="setning" style="width: 300px; height: 150px; font-size: 14px;"><?=$setning;?></textarea><br> <textarea name="setning" style="width: 300px; height: 150px; font-size: 14px;"><?=$setning;?></textarea><br>
@ -42,7 +49,8 @@
</p> </p>
</form> </form>
<p>Setningen har ordet "is" <?=$gangerStr;?></p> <p>Setningen har "is" <?=$gangerStr;?></p>
<p>Setningen har ordet "is" <?=$gangerOrdStr;?></p>
</div> </div>
</body> </body>

View File

@ -15,7 +15,7 @@
// Insatte bursdag eller 'fødselsdagen' til PhP // Insatte bursdag eller 'fødselsdagen' til PhP
$bursdag = $_GET['bursdag'] ?? '08.06.1995'; $bursdag = $_GET['bursdag'] ?? '08.06.1995';
// Bruker klassen DateTime og setter inn bruker $bursdag i angitt format. // Bruker klassen DateTime og setter inn brukerens $bursdag i angitt format.
$bdag = DateTime::createFromFormat('d.m.Y', $bursdag); $bdag = DateTime::createFromFormat('d.m.Y', $bursdag);
if(!$bdag){ if(!$bdag){
echo "<p>Greide ikke å forstå den insatte datoen. Prøv igjen.</p>"; echo "<p>Greide ikke å forstå den insatte datoen. Prøv igjen.</p>";
@ -30,12 +30,15 @@
$datoStr = $bdag->format('j. M. Y'); $datoStr = $bdag->format('j. M. Y');
$deltaStr = $deltaAar." år og ".($deltaDager-($deltaAar*365))." dager"; $deltaStr = $deltaAar." år og ".($deltaDager-($deltaAar*365))." dager";
// Hvis brukeren ikke enda har satt inn en dato, gi spesielt tilfelle:
if(empty($_GET)){ if(empty($_GET)){
printf("<p>PHP som ble lansert '%s', er i dag <strong>%s</strong> gammelt.</p>", $datoStr, $deltaStr); printf("<p>PHP som ble lansert '%s', er i dag <strong>%s</strong> gammelt.</p>", $datoStr, $deltaStr);
} }
// Ellers hvis datoen er i fortiden
elseif($forskjell->format("%R") != "-") { elseif($forskjell->format("%R") != "-") {
printf("<p>Personer med fødselsdato '%s' er i dag <strong>%s</strong> gamle.</p>", $datoStr, $deltaStr); printf("<p>Personer med fødselsdato '%s' er i dag <strong>%s</strong> gamle.</p>", $datoStr, $deltaStr);
} }
// Til slutt hvis datoen er i fremtiden
else { else {
printf("<p>Personer med fødselsdato '%s' blir født om <strong>%s</strong>.</p>", $datoStr, $deltaStr); printf("<p>Personer med fødselsdato '%s' blir født om <strong>%s</strong>.</p>", $datoStr, $deltaStr);
} }

View File

@ -13,21 +13,29 @@
<?php <?php
function genPwd($len = 8){ /**
* @throws Exception
// Liste over støtta tegn. ÆØÅ osv. er ikke med fordi de blir to tegn og ikke funker lengre nede. */
$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; function genPwd($len = 8): string {
// Liste over tegn som kan bli med i passordet.
$characterString = "abcdefghijklmnopqrstuvwxyzæøåABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ";
$numbers = "1234567890"; $numbers = "1234567890";
$special = "!#%&/()=?+*-:;"; $special = "!#%&/()=?+*-:;";
// Converterer tegn-lista til en array av UTF-8 tegn. (Kan funke uten denne som tilfellene med tallene eller spesial-tegnene, men da støttes ikke UTF-8 (æøå))
$characters = preg_split('//u', $characterString, null, PREG_SPLIT_NO_EMPTY);
// Tellere så vi kan bekrefte at passordet inneholder minst ett av hver type.
$numCount = 0; $numCount = 0;
$speCount = 0; $speCount = 0;
$chaCount = 0; $chaCount = 0;
// Prosent-sjangse for at nummer og spesial-tegn blir valgt som neste tegn i passordet.
$numChance = 30; $numChance = 30;
$specChance = 20; $specChance = 20;
$pwd = ""; $pwd = "";
// Løkke som går over hvert tegn av det nye passordet. // Løkke som går over hvert tegn av det nye passordet.
for($i = 0; $i < $len; $i++){ for($i = 0; $i < $len; $i++){
if($i==0){ $rand = 100; } // Sikre at første tegn er en bokstav. if($i==0){ $rand = 100; } // Sikre at første tegn er en bokstav.
@ -47,7 +55,7 @@
} }
// Ellers skriv en bokstav. // Ellers skriv en bokstav.
else { else {
$pwd .= $characters[ random_int(1, strlen($characters) )-1 ]; $pwd .= $characters[ random_int(1, count($characters) )-1 ];
$chaCount++; $chaCount++;
} }
} }
@ -58,9 +66,17 @@
$pwdLen = $_GET['pwdlen'] ?? 8; $pwdLen = $_GET['pwdlen'] ?? 8;
?> ?>
<p><strong><?=genPwd($pwdLen);?></strong></p> <p>
<?php
try {
echo "<strong>".genPwd($pwdLen)."</strong>";
} catch (Exception $e) {
echo "<i><strong>Feil!</strong> Kanskje en god kilde for tilfeldighet ble ikke funnet.</i><br></p><p>".$e;
}
?>
</p>
<p><form><input type="number" name="pwdlen" value="<?=$pwdLen;?>" min="8" max="42"><input type="submit" value="Generer nytt..."></form></p> <form><p><input type="number" name="pwdlen" value="<?=$pwdLen;?>" min="8" max="42"><input type="submit" value="Generer nytt..."></p></form>
</div> </div>