Programmera i PHP/Mer om text i PHP

Från Wikibooks
Hoppa till navigering Hoppa till sök


Hur får man ut text på skärmen?[redigera]

Det finns flera olika sätt att få ut text på skärmen, t.ex.

<?php
echo "Ett PHP-skript!<br />";
echo "Visst ser det snyggt ut?";
?>

Man behöver inte ange att det är php man användwr som skriptspråk, det går lika bra att skriva:

<?
echo "Ett PHP-skript!<br />";
echo "Visst ser det snyggt ut?";
?>

Äldre web-läsare brukar dock visa resultatet bättre och snabbare om man anger att det är php som används.

Istället för echo kan man skriva print:

<?
print "Ett PHP-skript!<br />";
print "Visst ser det snyggt ut?";
?>

Det är bara två olika sätt att skriva samma sak.

Det går även att använa script-taggarna i htmlstandarden för att tala om att man använder php:

<script language="php">
print "Ett PHP-skript!<br />";
print "Visst ser det snyggt ut?";
</script>

Anger du inte att du använder php tror läsaren, f.o.m. HTML5 blev standard, att du använder dig av javascript vilket är den nya standarden för script. Därför måste du fylla i att du använder php som scriptspråk. Det här sättet att koda tar längre tid men ger samma resultat.

Slutligen går det att använda parenteser;

<?php
echo ("Ett PHP-skript!<br />");
echo ("Visst ser det snyggt ut?");
?>

Resultatet för användaren blir exakt detsamma, det är upp till dig om du vill använda dem.

Ny rad[redigera]

Vill du lägga till en ny rad i texten kan du endera göra det genom php eller med hjälp av html.

Htmlversionen blir:

<?php
echo "Ett PHP-skript!";>";
<br />
<?php
echo "Visst ser det snyggt ut?";
?>

Om du däremot använder dig av radbrytning i text som är standard inom all högre programmering skriver man \n:

<?
echo "Ett PHP-skript!\n";
echo "Visst ser det snyggt ut?";
?>

Det blir troligtvis ingen radbrytning på hemsidan, men om du lägger in texten i en textruta är du tvungen att göra på det här sättet för att få med en radbrytning.

Enkelt- eller dubbelt citatecken?[redigera]

Som du kanske sett används både enkelt och dubbelt citattecken i php-kod. Det är bara två olika sätt att skriva samma sak. Det finns ett undantag: använder du en variabel i en textsträng skrivs det variabeln står för om du har dubbla citattecken men själva variabeln om du använder enkla. Jämför dessa närmast identiska kodsnuttar:

 <?php $Namn = Hjalmar;
 echo "Är du från Finland $Namn ?";?><br>
 <?php echo 'Är du från Finland $Namn ?'; ?>

I det övre exemplet blir utskriften:

Är du från Finland Hjalmar?

Medan i den nedre blir resultatet:

Är du från Finland $Namn?

Slå ihop text[redigera]

Många gånger är man tvungen att slå ihop en text med en annan och i php gör man det med en punkt:

 <?php
 $maonad="januari";
 echo "Det är kallt i  " .$maonad . " !";
?>

Tänk på att punkterna ALLTID skall ligga utanför citattecknen. Det är ett synnerligen vanligt, och ett ytterst irriterande, slarvfel att placera punkterna på fel plats om man skall slå ihop många mindre textstycke i en lång text.

Slå ihop tal[redigera]

Skall du däremot slå ihop två tal använder du + tecken som du alltid gjort i skolmatematiken. Det går att slå ihop dem med punkt, men talen behandlas som text och inte som siffror:

<?php
 $tal1 = 13;
 $tal2 = 24;
 echo $tal1 . $tal2; ?>
 <br />
<?php echo $tal1 + $tal2; ?>

Resultatet blir:

1324
37

Trimma bort tomma tecken[redigera]

Ofta uppstår problem när användare lägger till ett mellanslag på en textsnutt som skall jämföras mot någon annan. Anta att en användare loggar in med ett användarnamn som har ett mellanslag på slutet. För användaren verkar det konstigt att inte bli inloggad, den ser ju inte att det är ett "tomt tecken" med. Det finns en väg runt det problemet, eller snarar flera: ltrim, rtrim, trim och chop.

  • ltrim tar bort alla tomma tecken på vänster sida om texten, dvs. innan den börjar. (l=left)
  • rtrim tar bort alla tomma tecken i slutet, efter sista synliga tecknet. (r=right)
  • trim eller chop tar bort tomma tecken både före- och efter texten.

Exempel:

 <?php
 $Stad = " Kumla ";
 $Stad = chop($Stad);
 echo $Stad;
 ?>

Mixtra med strängar[redigera]

Ibland vet man inte om en användare lagt in stora- eller små bokstäver i en text som skall jämföras. Då kan man skapa en variabel som fylls med ordet där man endera omvandlat alla bokstäver till versaler (stora bokstäver) eller gemener (små bokstäver). Kommandona för det är:

  • strtolower = alla bokstäver blir gemener
  • strtoupper = alla bokstäver blir versaler

Exempel:

 <?php
 $kung = "Karl xii";
 $kung = strtoupper($kung);
 if $kung == "KARL XII" {
    echo "Sköts vid Halden";}
 else {
    echo "Fel kung";}
 ?>

Andra trix med text[redigera]

Tre andra mer eller mindre roliga funktioner som kan nämnas är:

  • ucfirst, första bokstaven blir stor, väldigt behändigt med namn, t.ex $Temp = ucfirst($Temp);
  • ucwords, samtliga ord i en text får första bokstaven omvandlad till versal. Mindre nyttig men... $Temp = ucwords($Temp);
  • strrev, textens bokstäver kommer i omvänd ordning, tämligen oanvändbart men... $Temp = strrev($Temp);

Beräkna antalet bokstäver[redigera]

En synnerligen nyttig funktion som används är strlen som visar hur många bokstäver ett ord innehåller. Även mellanslag beräknas så det är bra om dessa tagits bort med trim eller chop innan:

$Temp="Gymnasieskolan";
echo strlen($Temp); // Talet 14 visas, eftersom ordet innehåller 14 bokstäver

Välj text inuti annan text[redigera]

Slutligen har vi funktionen substr som tar fram en viss text inuti en längre text. Anta att du har en lista med datum skrivna enligt amerikansk standard, ÅR-DAG-MÅNAD och vill kunna ändra dem till svensk ÅR-MÅNAD-DAG. Då måste du ta isär bokstäverna 6-7 samt 9-10, lagra dem i en temporar variabel där du kan låta dem skifta plats och sedan sättas tillbaka efter årtalet igen. Hur gör man det? Sunstr fungerar enligt följande:

substr (sträng_som_ska_behandlas, startposition, längd).

Exempel: Så om vi antar att du har det amerikanska datumet tar du ut månaden, de två sista tecknen med.

 <?php
 $USAdatum="2015-24-12";
 $aor = substr($USAdatum,0,4);
 $dag = substr($USAdatum,8,2);
 $maonad = substr($USAdatum,5,2);
 echo $aor."-".$maonad."-".$dag;
 ?>

Resultatet blir:

2015-12-24

Splitta en textrad till en lista[redigera]

Ant att du har en textrad med olika delar separerade med komman. Ett exempel från verkligeheten är när man t.ex. lägger in sökord i Worpress. Då skrivs de in i en lång rad med komman mellan. Sökord kan vara:

tulpan, vitsippa, vår, tussilago

För att bryta ner den textraden så att varje ord står ensamt i en lista skriver man:

<?php
$string = 'tulpan, vitsippa, vår, tussilago';
$array = explode(',', $string);
?>

Använder du semikolon istälet skriver du:

<?php
$string = 'tulpan; vitsippa; vår; tussilago';
$array = explode(';', $string);
?>