Avatar billede John Novice
10. august 2024 - 15:17 Der er 3 kommentarer og
1 løsning

PHP alfabet

Hej.

Jeg driver Anelinks.dk og er i gang med et projekt (demo), hvor man skal tilgå et leksikon med forskellige emner.

DEMO: http://www.anelinks.dk/ord_vis.php?id=1

Jeg har et kodesnip i php, der afvikler et alfabetet, som igen henter data (ord og tekst) fra databasen (Mysqli), når man trykker på de forskellige bogstaver i alfabetet. Det virker fint, på nær når Æ Ø Å indgår i ordet, f.eks. Ægteskab.

Jeg kan ikke lige greje hvor fejlen ligger, og tænker om nogle vil hjælpe mig på vej, så den acceptere de danske tegn på lige fod med de øvrige.

Her er koden der afvikler projektet:

Alfabetet:

<?php 
        for( $i = 65; $i < 91; $i++) {
        $bot[] = chr($i);
          }
            $bot[] = '&#198';
            $bot[] = '&#216';
            $bot[] = '&#197';

echo '<ul class="pagination pagination-sm mb-0">'; 
              foreach($bot as $alfabet) 
        { 
  echo '<li class="page-item"><a class="page-link" href="ord_vis.php?char='.$alfabet.'&id='.mysqli_real_escape_string($con,$_GET['id']).'#tags">'.$alfabet.'</a></li>'; 
                          } 
                        echo '</ul>'; 
                    ?>

Hentet data fra databasen:

<?php
$char = ''; 
if(isset($_GET["char"])) 


    $char = mysqli_real_escape_string($con,$_GET['char']); 
    $char = preg_replace('#[^a-z]#i', '', $char); 
   
    $query = "SELECT * FROM ord_content_ord WHERE j_title LIKE '$char%'";

else 

    $query = "SELECT * FROM ord_content_ord ORDER BY j_title ASC"; 


$result = mysqli_query($con,$query);


if ($result->num_rows > 0) {       
    while($r = $result->fetch_assoc()) {

 
echo '
<h5 class="font-size-17 mb-4" style="margin-top: 0px;color: darkorange;">'.$r["j_title"].' <span style="float: right;">'.$r["alfa"].'</span></h5>

'.$r["j_text"].'

<hr style="color: #777margin-top: 0px;"></hr>';


}
else 

      echo 'Ingen data fundet';
    } 
                   
?>
Avatar billede arne_v Ekspert
10. august 2024 - 15:40 #1
3 spørgsmål:
* er dit PHP/HTML UTF-8 eller ISO-8859-1?
* er din database connection UTF-8 eller ISO-8859-1?
* er dine data i databasen UTF-8 eller ISO-8859-1?
Avatar billede John Novice
10. august 2024 - 15:50 #2
De er alle 3 UTF-8. I databasen køre det som utf8mb4_danish_ci. Den afvikler sådan set tegnsættet ok, men specifikt kan jeg ikke få den til at hente korrekt data via ÆØÅ fra alfabetet.
Avatar billede John Novice
10. august 2024 - 17:39 #3
Jeg har løst problemet.

Det handlede om at udvide preg_replace funktionen og koden til:

$char = mysqli_real_escape_string($con,$_GET['char']); 
    $pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/";
    $char = preg_replace($pattern, '', $char);
Avatar billede John Novice
10. august 2024 - 17:47 #4
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester