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 {
margin: 0 auto;
}
input[type=number] {
width: 70px;
}

View File

@ -13,29 +13,25 @@
<h2>Sjekk av etternavn</h2>
<?php
// 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.
// Henter etternavn fra GET, eller bruker en standard.
$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>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>
<p>
<form>
<form>
<p>
<input type="text" name="etternavn" value="<?=$etternavn;?>">
<input type="submit" value="Sjekk navn...">
</form>
</p>
</p>
</form>
</div>
</body>

View File

@ -14,6 +14,7 @@
<?php
$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'])){
// Funksjonen strip_tags kutter vekk alt som er inni tags.
$input = strip_tags($input);

View File

@ -15,26 +15,33 @@
// Insatt setning eller standard-setningen.
$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.
$re = '/(?:^|\s)is(?:\s|$)/mi';
// Resultatene puttes i en array $resultater.
preg_match_all($re, $setning, $resultater, PREG_SET_ORDER, 0);
// 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){
$gangerStr = $ganger." gang";
}
// ... ellers skrives ganger i flertall.
else {
$gangerStr = $ganger." ganger";
$gangerOrdStr = $gangerOrd." 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">
<p>
<textarea name="setning" style="width: 300px; height: 150px; font-size: 14px;"><?=$setning;?></textarea><br>
@ -42,7 +49,8 @@
</p>
</form>
<p>Setningen har ordet "is" <?=$gangerStr;?></p>
<p>Setningen har "is" <?=$gangerStr;?></p>
<p>Setningen har ordet "is" <?=$gangerOrdStr;?></p>
</div>
</body>

View File

@ -15,7 +15,7 @@
// Insatte bursdag eller 'fødselsdagen' til PhP
$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);
if(!$bdag){
echo "<p>Greide ikke å forstå den insatte datoen. Prøv igjen.</p>";
@ -30,12 +30,15 @@
$datoStr = $bdag->format('j. M. Y');
$deltaStr = $deltaAar." år og ".($deltaDager-($deltaAar*365))." dager";
// Hvis brukeren ikke enda har satt inn en dato, gi spesielt tilfelle:
if(empty($_GET)){
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") != "-") {
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 {
printf("<p>Personer med fødselsdato '%s' blir født om <strong>%s</strong>.</p>", $datoStr, $deltaStr);
}

View File

@ -13,21 +13,29 @@
<?php
function genPwd($len = 8){
// Liste over støtta tegn. ÆØÅ osv. er ikke med fordi de blir to tegn og ikke funker lengre nede.
$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
/**
* @throws Exception
*/
function genPwd($len = 8): string {
// Liste over tegn som kan bli med i passordet.
$characterString = "abcdefghijklmnopqrstuvwxyzæøåABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ";
$numbers = "1234567890";
$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;
$speCount = 0;
$chaCount = 0;
// Prosent-sjangse for at nummer og spesial-tegn blir valgt som neste tegn i passordet.
$numChance = 30;
$specChance = 20;
$pwd = "";
// Løkke som går over hvert tegn av det nye passordet.
for($i = 0; $i < $len; $i++){
if($i==0){ $rand = 100; } // Sikre at første tegn er en bokstav.
@ -47,7 +55,7 @@
}
// Ellers skriv en bokstav.
else {
$pwd .= $characters[ random_int(1, strlen($characters) )-1 ];
$pwd .= $characters[ random_int(1, count($characters) )-1 ];
$chaCount++;
}
}
@ -58,9 +66,17 @@
$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>