echo strspn("xxxööööööö","xy") // palauttaa arvon 3
echo strspn("axxxööööööö","xy") // palauttaa arvon 0
Miksi noin? Miksi jälkimmäinen ei myös palauta arvoa 3? En löytänyt tähän vastausta googlettamalla.
Vai millä funktiolla saan testattua, sisältääkö string1 missä tahansa kohdassa minkä tahansa string2:n sisältämän merkin, eikä pelkästään string1:n alusta lukien? Tuo strspn:n käytös on mielestäni outo, eikä vastaa manuaaleja.
echo strspn("axxxööööööö","xy") // palauttaa arvon 0
Miksi noin? Miksi jälkimmäinen ei myös palauta arvoa 3? En löytänyt tähän vastausta googlettamalla.
Vai millä funktiolla saan testattua, sisältääkö string1 missä tahansa kohdassa minkä tahansa string2:n sisältämän merkin, eikä pelkästään string1:n alusta lukien? Tuo strspn:n käytös on mielestäni outo, eikä vastaa manuaaleja.
Vastaukset 3
Vanhimmat
Käytä vaikka eregiä seuraavasti:
if (ereg("[xy]", "xxxööööööö"))
echo "Sisältää";
else
echo "Ei sisällä";
Miten niin ei vastaa manuaaleja? Manuaaleissahan lukee aivan selvästi:
"strspn -- Find length of initial segment matching mask"
"strspn -- Find length of initial segment matching mask"
Missä kohdassa tuossa sanotaan, että tarkistus tehdään vain ensimmäisen stringin alusta lukien?
"strspn -- Find length of initial segment matching mask"
Eli:
"strspn -- Toteaa alkukirjainlohkon sovituksen peiton pituuden."
Voit käyttää ereg:n sijasta myös strspn -käskyn käänteistä käskyä (eli strcspn) testaamiseen:
function testaa($jono, $kirjaimet)
{
return (strlen($jono) !== strcspn($jono, $kirjaimet));
}