You are currently browsing the archives for the Programmering category


Perl split(): Split en streng med multiple delimetere

Perls split-funktion splitter en $string op i en @array med et valgfrit symbol som adskillertegn (delimeter). Hvis du fx vil bruge kolon ‘:’ som delimeter gør du:

@array = split(':', $string);

Men hvad gør man hvis man hvis man vil bruge flere forskellige symboler til at splitte en streng? Her er en meget enkel og overskuelig metode.

Du starter med at substituere alle de symboler du vil bruge som delimeter. Hvis du fx gerne vil bruge alle vokaler som delimeter, gør du således:

$string =~ s/(a|e|i|o|u|y|æ|ø|å)/a/g;

Nu er alle vokaler erstattet med a, og så behøver du bare at splitte med a som delimeter:

@array = split('a', $string);

Sådan laver man en forfatterliste i wordpress

Hvis man har en wordpress blog med flere forfattere, kan man lave en liste over forfatterne og hvor mange indlæg de har skrevet, ved at indsætte følgende kode:

<ul>
<?php foreach ( get_users() as $user ) : ?>
<li><?php echo $user->display_name; ?> (<?php
echo 'Antal artikler: ' . count_user_posts($user->ID);
?>)</li>
<?php endforeach; ?>
</ul>

Man kan sortere listen efter forfatternavn ved at udskifte get_users() med

get_users('order=ASC&orderby=display_name')

eller efter hvor mange artikler de har skrevet:

get_users('order=DESC&orderby=post_count')

Man kan også tilføje en række andre kriterier. Se hele listen i get_users referencen.

Hvordan husker man en streng over flere sider i PHP?

Forestil dig at du vil bruge en eller anden værdi på tværs af flere html-sider, fx et brugernavn eller en anden værdi som brugeren har indtastet, kan du bruge php-sessions. Det er ganske enkelt.

Ethvert dokument der skal indgå i en session, indledes med:

<?php session_start(); ?>

Strengt taget bør dette stå før <html>-tagget, men jeg har ikke oplevet problemer med at det står senere. Strenge der skal huskes i en session, defineres således:

 $_SESSION['streng'] = "Hej verden!";

Samlet set kan man altså fx starte en side med:

<?
php session_start();
$_SESSION['streng'] = "Hej verden!";
?>

Og for at benytte strengen på en anden side, skriver man:

<?
php session_start();
echo $_SESSION['streng'];
?>

Split en string til array i PHP

Hvis du har strengen

$string = "bananer, appelsiner, ananas";

som du gerne vil splitte op i en array i PHP, kan du gøre med med explode kommandoen:

$array = explode(",", $string);

Mellem citationstegnene skal du skrive det symbol der skal bruges som separatortegn, i dette tilfælde et komma. Hvis din streng fx er en længere tekst, kan du splitte den op i sætninger med

$array = explode(".", $string);

eller hvis vil splitte ved hvert linjeskift:

$array = explode("\n", $string);

Når du har splittet strengen op i en array, vil du sikkert også gerne gøre noget med den nye array. Sådan skriver du fx elementer op i en punktopstilling i html:

echo "<ul>";
$array = explode(",", $string);
foreach ($array as $i => $element) {
echo "<li>$element</li>";
}
echo "</ul>";

Få Perl til Windows, Mac og Linux

Det er utrolig praktisk at kunne skrive små perl-programmer på sin pc. Men hvis du har en almindelig hjemmecomputer, har du brug for et program der kan fortolke perl-scripts for at komme i gang.

Her er de mest benyttede gratis programmer:

  • ActivePerl. Virker til Windows, Mac og Linux. Nemt at installere. Jeg foretrækker dette program, mest fordi perl-programmer får deres eget genkendelige ikon på skrivebordet.
  • Strawberry Perl. Open Source perl fortolker. Virker kun til Windows.

For almindelige brugere gør det næppe nogen forskel om man bruger det ene eller andet program.

Skriv og kør dit første perl-program

Kopier dette ind i et tomt text-dokument (brug notesblok, wordpad eller lignende):

print "Hej verden\n";

I Windows højreklikker du på ikonet og vælger Åbn med > Vælg standardprogram. Find ActivePerl og vælg dette.

Programmet åbner en kommandoprompt, skriver “Hej verden” og lukker kommandoprompten igen. Det går formodentlig så hurtigt at du ikke når at se det. Skriv derfor i stedet dette:

open UD, ">output.txt";

select UD;

print "Hej verden!";

Kør programmet. Nu skrives outputtet ud i txt-filen output.txt (hvis den ikke eksisterer i forvejen, bliver den oprettet) som du kan åbne og læse for at se om programmet virker.