Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Miten saa tietää stringistä sisältääkö se määrätyn stringin? PHP

Sivun loppuun

prot [03.10.2004 19:59:43]

#

Antakaa esimerkki tai jotain että miten saa tietää stringistä sisältääkö se määrätyn stringin? Siis miten koodataan että

if "abcdefg" sisältää "a" then jotain tapahtuu

Juice [03.10.2004 20:06:07]

#

Hoh-hoijakkaa. Luepa putkan opas ja PHP-manuska.

<?php
if(substr_count("abcdef", "a") > 0){
    'ACTION!
}
?>

EDIT: Aukinainen tagi

ajv [03.10.2004 20:08:16]

#

Ei ole putkan omaa hakemistoakaan vähään aikaan mainostettu:
https://www.ohjelmointiputka.net/hak/?kieli=PHP­&alue=Merkkijonot
Löytyy varmasti useitakin vaihtoehtoja.

prot [03.10.2004 21:39:24]

#

ok kiitti katellaan näillä..

Wizard [03.10.2004 22:38:42]

#

Turhaa Juice kirjoittaa noin pitkää koodia kun helpommallakin pääsee:

<?php

if(strstr("abcdefg", "a"))
{
'ACTION';
}
?>

ajv [03.10.2004 23:17:34]

#

Wizard kirjoitti:

<?php
if(strstr("abcdefg", "a"))
{
'ACTION';
}
?>

Jos nyt oikeen tarkkoja ollaan, niin tuo ei toimi 100-prosenttisesti, sillä strstr() sattaa palauttaa nollan. Varma tapa on verrata palauttaako funktio totuusarvon:

<?php
if(strstr("abcdef0", "0") !== false){
   echo 'ACTION';
}
?>

Wizard [04.10.2004 00:52:26]

#

Noh, jos halutaan pilkkua nussia, niin:

<?php
if(is_string(strstr("abcdef0", "0")))
{
echo 'ACTION';
}
?>

...joka sitten jo mietiskelee myös nollan olemassaoloa kuten pitääkin.

Juice [04.10.2004 20:49:39]

#

Mutta toimii yhtä lailla. Merkki sinne tai tänne.

ajv [05.10.2004 00:59:41]

#

Wizard kirjoitti:

Noh, jos halutaan pilkkua nussia, niin:

<?php
if(is_string(strstr("abcdef0", "0")))
{
echo 'ACTION';
}
?>

...joka sitten jo mietiskelee myös nollan olemassaoloa kuten pitääkin.

Niinno jos sitä atomia lähdetään halkomaan, niin aluksihan moitit Juicea pitkästä koodista, mutta jos nyt lasketaan tuolla if-lauseen sisällä olevat merkit, niin minun ja juicen koodissa niitä on 21 ja sinulla 24, että mitä nyt turhaan noin pitkästi, kun helpommallakin pääsee :)

T.M. [05.10.2004 01:00:22]

#

strpos() on nopeampi ^_^

<?php
if(strpos("abcdef0", "a") !== false){
    print"löytyi";
}
?>

Meitsi [05.10.2004 13:48:41]

#

T.M. kirjoitti:

strpos() on nopeampi ^_^

<?php
if(strpos("abcdef0", "a") !== false){
    print"löytyi";
}
?>

Ho? Ei mitään print:iä tueta. ^^

<?php
if(strpos("abcdef0", "a") !== false){
    echo "löytyi";
}
?>

Ja mikä toi !== on? Eiks pitäis olla !=

litra [05.10.2004 14:45:27]

#

<?php
if(strpos("abcdef0", "a")){
    echo "löytyi";
}
?>

optimoidaan vähän

ajv [05.10.2004 16:24:52]

#

Meitsi kirjoitti:

Ja mikä toi !== on? Eiks pitäis olla !=

Tuo '!==' ottaa huomioon myös muuttujatyypin, joka tässä tapauksessa on erittäin oleellista, koska strpos() voi palauttaa myös nollan ja nolla !== false
siis esim.

<?
if(0 == false) //toteutuu
if(0 === false) //ei toteudu
?>

litra kirjoitti:

<?php
if(strpos("abcdef0", "a")){
echo "löytyi";
}
?>

Olisit edes kokeillut, ennen kuin optimoit :D Tuohan nyt ei ainakaan toimi :P

tsuriga [05.10.2004 16:33:51]

#

Tulkille false ja nolla ovat siis sama asia, joten siksi !==. Litra ei se optimointi ole kirjaimien vähentelyä.

litra [11.10.2004 18:02:33]

#

hmm..mielestäni on vain loogisempaa esittää ehto "jos löytyy" kuin "jos löytyy on eri kuin false tai nolla"..eikö se ole optimaalisempaa?

ajv [11.10.2004 18:19:15]

#

litra kirjoitti:

hmm..mielestäni on vain loogisempaa esittää ehto "jos löytyy" kuin "jos löytyy on eri kuin false tai nolla"..eikö se ole optimaalisempaa?

Voipi olla, mutta tässä tapauksessa
strpos("abcdef0", "a")
palauttaa nollan, mikä tarkoittaa, että kirjain 'a' löytyy merkkijonon alusta. Jos kirjainta ei löydy, funktio plauttaa false.
Eli scriptin pitäisi tulostaa "Löytyi", mutta eipähän se tulostakkaan, koska if ajattelee nollan epätodeksi:
if(0){
echo "Löytyi"
}


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta