/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
php spørgsmål
Fra : soren


Dato : 25-03-02 17:08

hvis nu jeg har noget php:

<?php

$texten = 'der var engang en mand';

if () {
echo "manden var der!";
}else{
echo "manden var der ikke!";
}

?>

med hvilken kommando spørger jeg så i if ()
hvis jeg vil spørge om : "hvis "mand" er i $texten"


/soren



 
 
Tonni Aagesen (25-03-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 25-03-02 17:27


"soren" <soren51@hotmail.com> skrev i en meddelelse
news:a7ni67$21vj$1@news.cybercity.dk...
> hvis nu jeg har noget php:
>
> <?php
>
> $texten = 'der var engang en mand';
>
> if () {
> echo "manden var der!";
> }else{
> echo "manden var der ikke!";
> }
>
> ?>
>
> med hvilken kommando spørger jeg så i if ()
> hvis jeg vil spørge om : "hvis "mand" er i $texten"

http://dk.php.net/manual/en/function.strstr.php


--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk



soren (25-03-2002)
Kommentar
Fra : soren


Dato : 25-03-02 17:48

> > hvis nu jeg har noget php:
> >
> > <?php
> >
> > $texten = 'der var engang en mand';
> >
> > if () {
> > echo "manden var der!";
> > }else{
> > echo "manden var der ikke!";
> > }
> >
> > ?>
> >
> > med hvilken kommando spørger jeg så i if ()
> > hvis jeg vil spørge om : "hvis "mand" er i $texten"
>
> http://dk.php.net/manual/en/function.strstr.php

proff! tak :)

/soren

>
> --
> Mvh
> Tonni Aagesen
> agent29@mail1.stofanet.dk
>
>



Martin Mouritzen (25-03-2002)
Kommentar
Fra : Martin Mouritzen


Dato : 25-03-02 22:24

After I finished the 3 Pan Galactic Gargle Blasters, "Tonni Aagesen"
<use.my@signature.com> just offered me, he muttered some weird stuff,
and I had to correct this gibberish:

>> med hvilken kommando spørger jeg så i if ()
>> hvis jeg vil spørge om : "hvis "mand" er i $texten"
>
>http://dk.php.net/manual/en/function.strstr.php

Jeg syntes nu personligt, at det er lidt dumt at bruge funktioner der
ikke er beregnet til formålet. Desuden forvirrer du en nybegynder mere
ved at henvise ham til det.

Den rigtige funktion til formålet er IMO strpos
(<URL:http://php.net/manual/en/function.strpos.php>)

<?
if (strpos($texten,"mand")) {
// Findes
}
else {
// Findes ikke
}
?>

Det er selvfølgelig lidt defust hvadenten strstr eller strpos er mest
rigtig at bruge. Det kunne ihvertfald være oplagt emne til diskussion.
--
Nano Martin Mouritzen Phone +45 24899896
Vestergade 43 Programmer Advanced Simplicty
DK-8000 Århus martin@nano.dk http://www.nano.dk
Note: Nano søger samarbejdspartnere, se mere på websitet

Jonas Delfs (25-03-2002)
Kommentar
Fra : Jonas Delfs


Dato : 25-03-02 22:40

"Martin Mouritzen" <martin@fez.dk> skrev i en meddelelse
news:a7o4jo$6mk$1@news.cybercity.dk...
> After I finished the 3 Pan Galactic Gargle Blasters, "Tonni Aagesen"
> <use.my@signature.com> just offered me, he muttered some weird stuff,
> and I had to correct this gibberish:
>
> >> med hvilken kommando spørger jeg så i if ()
> >> hvis jeg vil spørge om : "hvis "mand" er i $texten"
> >
> >http://dk.php.net/manual/en/function.strstr.php
>
> Jeg syntes nu personligt, at det er lidt dumt at bruge funktioner der
> ikke er beregnet til formålet. Desuden forvirrer du en nybegynder mere
> ved at henvise ham til det.
>
> Den rigtige funktion til formålet er IMO strpos
> (<URL:http://php.net/manual/en/function.strpos.php>)

Jeg synes personligt ikke at du skal rette på folks svar når de er lige så
korrekte som dit eget bud.
Begge funktioner finder første tilfælde af "needle" i "haystack". strstr()
returnerer den efterfølgende streng af "haystack" hvorimod strpos()
returnerer positionen.

> <?
> if (strpos($texten,"mand")) {
> // Findes
> }
> else {
> // Findes ikke
> }
> ?>

Hvis ikke jeg husker forkert er ovenstående ikke et gyldigt eksempel, da
strpos() vil returnere 0 (falsk værdi) hvis "mand" udgør starten af
"haystack".
Følgende vil derimod virke efter hensigten.

if (strpos($texten, "mand") === false) { // bemærk de 3 lighedstegn

strstr() vil dog heller ikke altid virke efter hensigten uden et lille trick
alá dette:

if (is_string(strstr($texten, "mand"))) { // is_string sikrer at if'en ikke
evaluerer false fordi "needle" findes i slutningen af strengen

> Det er selvfølgelig lidt defust hvadenten strstr eller strpos er mest
> rigtig at bruge.

Ja, hvorfor så kritisere Tonni's svar?

> Det kunne ihvertfald være oplagt emne til diskussion.

.... started... :)

--
Mvh./Best Regards
Jonas Delfs, http://delfs.dk



Martin Mouritzen (26-03-2002)
Kommentar
Fra : Martin Mouritzen


Dato : 26-03-02 14:02

After I finished the 3 Pan Galactic Gargle Blasters, "Jonas Delfs"
<jonas@NOSPAMdelfs.dk> just offered me, he muttered some weird stuff,
and I had to correct this gibberish:

>Jeg synes personligt ikke at du skal rette på folks svar når de er lige så
>korrekte som dit eget bud.

Mjaeh, jeg var måske også lidt hård, men det var mere for at lægge op
til debat. Men du har ret, funktionerne har hvert sit formål og ingen
af dem er decideret beregnet til formålet, jeg tror grunden til at jeg
tænker på strpos som mere korrekt, er at det er funktioner lignende
den, som bliver brugt i andre sprog til at gøre den slags. :)

Det kunne dog være rart at se benchmarks på strpos vs strstr (siden
der nu er så mange der bruger strstr) - Jeg ville helt klart tro
strpos var noget hurtigere :)

Men, undskyld til Tonni, at jeg var lidt hård, jeg håber ikke du tog
det personligt :)
--
Nano Martin Mouritzen Phone +45 24899896
Vestergade 43 Programmer Advanced Simplicty
DK-8000 Århus martin@nano.dk http://www.nano.dk
Note: Nano søger samarbejdspartnere, se mere på websitet

Tonni Aagesen (26-03-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 26-03-02 14:51


"Martin Mouritzen" <martin@fez.dk> skrev i en meddelelse
news:a7pris$2mf9$1@news.cybercity.dk...

> Men, undskyld til Tonni, at jeg var lidt hård, jeg håber ikke du tog
> det personligt :)

Gør jeg da ikke :)


--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk



Peter Brodersen (26-03-2002)
Kommentar
Fra : Peter Brodersen


Dato : 26-03-02 14:28

On Mon, 25 Mar 2002 22:23:48 +0100, Martin Mouritzen <martin@fez.dk>
wrote:

>Jeg syntes nu personligt, at det er lidt dumt at bruge funktioner der
>ikke er beregnet til formålet. Desuden forvirrer du en nybegynder mere
>ved at henvise ham til det.

Betragt det som et idiom.

>Den rigtige funktion til formålet er IMO strpos
>(<URL:http://php.net/manual/en/function.strpos.php>)
>
><?
>if (strpos($texten,"mand")) {
> // Findes
>}

Dette er altså bare ikke en meget bedre brug af strpos i
if-sammenhæng, da 0 også vil være false i den forbindelse. Så hvis
strpos returnerer 0 (fx hvis teksten er "mand hvor er jeg sulten"), så
vil det også give false i dit tilfælde. Derfor bør det også tjekkes op
imod typen.

Eksempel:

<?
$texten = "mand hvor er jeg sulten";

// Giver "findes ikke", idet (0 == FALSE)
print (strpos($texten,"mand") != FALSE ? "findes\n" : "findes
ikke\n");

// Giver "findes", idet (0 !== FALSE)
print (strpos($texten,"mand") !== FALSE ? "findes\n" : "findes
ikke\n");
?>

Så det skal hedde:

if (strpos($texten,"mand") !== FALSE) {
..
}

Det samme kan selvfølgelig siges om strstr, hvis man søger efter "0"
og det kun findes som sidste tegn (hvor strstr så vil returnere
string'en "0"). Men hvis du virkelig vil hævde at "det skal gøres
ordentligt", så bør det gøres mere grundigt og præcist end blot "if
(funktion())".

Jeg ser som sagt ikke de store problemer i som udgangspunkt at bruge
strstr. Det er lettere her at se om man selv bruger "0" som needle
(hvilket såvidt jeg kan se vil være det eneste tilfælde, hvor man får
resulteret 0 - et andet tilfælde er måske hvis man søger på "-", og fx
får returneret "-0"). I strpos vil 0 blive returneret langt oftere.

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408939
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste