Gå til innhold

Php - mere string!


Gjest anonym

Anbefalte innlegg

Gjest dr. ian

Ja, for vi var jo ikke ferdige? :ler:

Ferdige blir man aldri, og jeg kan ikke skrive alt om php siden det er relativt omfattende.

Husk at du alltid finner forklaring/hjelp i funksjonslista på php.net

http://php.net

Men vi må ta med litt om string replacement, eller trusebytte, som det kalles på norsk :ler:

String replacement betyr rett og slett å finne et eller flere tegn i en string (klump med tekst) og erstatte dem med andre tegn (eller fjerne dem).

Dette er en viktig del av "rengjøringen" av tekst som skal inn i f.eks. en database, og vil fjerne kode eller gjøre den ubrukelig ved å fjerne/erstatte tegn koden trenger for å kjøre.

Ved slike input-felter som dette post-innlegg-skjemaet på kg er dette viktig, siden man kan komme helt uautentisert inn til post-formen og legge ting inn i databasen.

Den enkleste måten er funksjonen str_replace()

Den er ganske lik de andre funksjonene som behandler strings:

$text = str_replace("tegn som skal finnes","tegn som skal legges inn i stedet",$text);

Eksempel:

$text = "Jeg er en liten, smålig tekst som på søndager inneholder særedeles mange æææer, øøøer og åååer";

$text = str_replace("æ","æ",$text);

$text = str_replace("ø","ø",$text);

$text = str_replace("å","å",$text);

echo $text;

Dette eksemplet vil ikke forandre noe på teksten, men vil gjøre alle norske tegn om til 7bit ascii (internasjonalt tegnsett).

Det morsomme (? :ler: ) er at man kan veksle på å gjøre dette med php og javascript. Bare for sammenligningens del:

<script language="javascript">

<!--

function doCleanup() {

worktext = document.formname.fieldname.value;

worktext = worktext.replace(/æ/g,"&aelig;");

worktext = worktext.replace(/ø/g,"&oslash;");

worktext = worktext.replace(/å/g,"&aring;");

document.formname.fieldname.value = worktext;

document.formname.submit();

}

// -->

</script>

Dette eksemplet gjør det samme som php gjør ovenfor, men det gjøres før noe sendes til serveren.

formname er her navnet på formen, fieldname er feltet i formen kontrollen skal utføres på.

Samma greia, men man må allikevel ha en kontroll av tekst som kommer til serveren, siden en hacker kan lage sin egen form...

Ikke det at æ,,ø,å er farlige for servere, da :sjarmor:

Jadda!

doriansen

Lenke til kommentar
Del på andre sider

Fortsetter under...

Man trenger jo ikke sette str_replace() til faste verdier?

Her er et skjema som lar deg legge inn alle verdiene interaktivt, slik at du f.eks. kan bytte ut alle o'er i et innlegg på kg med en smiley. Nyttig... :kul:

Den bruker en ny funksjon, stripslashes(), som je ska kømmi telbars att tel.

<?PHP

$from = $HTTP_POST_VARS['from'];

$to = $HTTP_POST_VARS['to'];

$text = $HTTP_POST_VARS['text'];

if ($from != "" && $text != "") {

$string_replaced = str_replace($from, $to, $text);

} else {

$string_replaced = "";

}

$text = stripslashes($text);

$string_replaced = stripslashes($string_replaced);

?>

<html>

<head>

<title>Vår lille testside</title>

</head>

<body>

<?PHP

echo "<h4>Dette er originalteksten:<br></h4>$text<br><br>";

echo "<h4>Her er alle tilfeller av: $from byttet ut med: $to<br></h4>$string_replaced<br>";

?>

<form method="post" action="liten_replace.php">

Finn tegn:<br>

<input type="text" name="from" value="" size="15" maxlength="15"><br>

Bytt ut med:<br>

<input type="text" name="to" value="" size="15" maxlength="15"><br>

I denne teksten:<br>

<textarea cols="35" rows="6" name="text" id="text"></textarea><br>

<input type="submit" name="submit" value="Post!">

</form>

</body>

</html>

Det kan testes her:

http://home.no.net/dorian/phpkurs/liten_replace.php

dorian

Lenke til kommentar
Del på andre sider

Gjest d'orian

Jeg tenkte bare jeg skulle prøve å se om alle bokstaver av typen e ble byttet ut med smileys i dette innlegget. En veldig nyttig ting å gjøre, og sier vel endel om meg...

J:ler:g t:ler:nkt:ler: bar:ler: j:ler:g skull:ler: prøv:ler: å s:ler: om all:ler: bokstav:ler:r av typ:ler:n :ler: bl:ler: bytt:ler:t ut m:ler:d smil:ler:ys i d:ler:tt:ler: innl:ler:gg:ler:t. En v:ler:ldig nyttig ting å gjør:ler:, og si:ler:r v:ler:l :ler:nd:ler:l om m:ler:g...

Jepp?

dorian :kul:

Lenke til kommentar
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...