Avatar billede elskermad.dk Nybegynder
01. november 2005 - 19:57 Der er 24 kommentarer og
1 løsning

returnere true hvis en af værdierne i arrayet er i variablen

Hej Eksperter!

Jeg har brug for en funktion som kan returnere true hvis man kan finde en eller flere værdier fra et array i en variable...

altså:

$array = array("hej","med","dig");

$variable1 = "mig og dig er altid blah bla..."; = true
$variable2 = "sort er solen"; = false

?

:)
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 19:57 #1
... og en vigtig ting, sige hvilken key i arrayet som er rigtig :)
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 19:58 #2
er rigtig = passer med variablen
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:04 #3
array_search kan kun hvis teksten passer præcist med værdien i arrayet... min tekst kan godt have noget både før og efter værdien i arrayet?
Avatar billede nielle Nybegynder
01. november 2005 - 20:07 #4
F.eks.:

function ($variable)
{
    $array = array("hej","med","dig");
    foreach ($array as $ord)
    {
        if (stripos($variable, $ord) !== false) return true;
    }

    return false;
}
Avatar billede olebole Juniormester
01. november 2005 - 20:07 #5
<ole>

Du kan bruge in_array - men det er ikke så effektivt. Har du mulighed for at lave dit array sådan:
  $array = array("hej"=>"hej", "med"=>"med", "dig"=>"dig");

- da det vil give dig mulighed for at lave noget betydeligt bedre performende

/mvh
</bole>
Avatar billede olebole Juniormester
01. november 2005 - 20:10 #6
- og hvor lang kan din variable være ... hvor mange ord?

nielle >> alm. for-løkker er hurtigere end foreach-løkker  :)
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:11 #7
det er værdien for $_SERVER["HTTP_USER_AGENT"] som skal bruges... jeg vil gerne vide om der er søgemaskiner i den
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:13 #8
har mine søgemaskiner sådan her:

$spider[]     = "Googlebot"; // www.google.com
$spider[]     = "msnbot"; // www.search.msn.com
$spider[]     = "Yahoo! Slurp"; // www.yahoo.com
$spider[]     = "W3C_Validator"; // www.w3.org
$spider[]     = "scrutor"; // scrutor.dk
$spider[]     = "psbot"; // www.picsearch.com/bot.html
$spider[]     = "ZyBorg"; // www.WISEnutbot.com
$spider[]     = "OmniExplorer"; // www.omni-explorer.com
$spider[]     = "appie"; // www.walhello.com
$spider[]     = "Jigsaw"; // www.w3.org (CSS)
$spider[]     = "ia_archiver"; // ?
Avatar billede olebole Juniormester
01. november 2005 - 20:13 #9
- så ville jeg nok bruge nielle's - blot med en alm. for-løkke:

function ($variable) {
    $array = array("hej","med","dig");
    for ($i=0; $i<count($array); $i++) {
        if (stripos($variable, $array[$i]) !== false) return true;
    }
    return false;
}
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:14 #10
så skal den kunne returnere hvilken af søgemaskinerne der måske er i $_SERVER["HTTP_USER_AGENT"]-variablen
Avatar billede nielle Nybegynder
01. november 2005 - 20:14 #11
Var selv ved at lave noget tilsvarende :^)

function ($variable)
{
    $array = array("hej","med","dig");
    for ($idx=0; $idx<count($array); $idx++)
    {
    $ord = $array[$idx];
        if (stripos($variable, $ord) !== false) return true;
    }

    return false;
}
Avatar billede olebole Juniormester
01. november 2005 - 20:15 #12
function ($variable) {
    $array = array("hej","med","dig");
    for ($i=0; $i<count($array); $i++) {
        if (stripos($variable, $array[$i]) !== false) return $array[$i];
    }
    return false;
}
Avatar billede nielle Nybegynder
01. november 2005 - 20:15 #13
Eventuelt kan du bruge strpos() i stedet for stripos() da den også performer bedre. Jeg var dog ikke helt sikker på om du ville have en case-insensitic søgning eller ej.
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:19 #14
ved ikke om case har nogen betydning? kan de finde på at omdøbe deres trawlere?
Avatar billede nielle Nybegynder
01. november 2005 - 20:22 #15
Det kan vi jo altså ikke rigtigt garantere dig noget om :^)
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:23 #16
hehe men hvilken er hvad?
Avatar billede nielle Nybegynder
01. november 2005 - 20:25 #17
hvilken er hvad - hvad?
Avatar billede olebole Juniormester
01. november 2005 - 20:29 #18
Er det returneringen, du spørger om ... så kik på (01/11-2005 20:15:10)  :)
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:32 #19
nej hvilken er ligeglad med casen?
Avatar billede nielle Nybegynder
01. november 2005 - 20:41 #20
strpos() er casesensitiv og stripos() er caseINsensitiv. Det lille 'i' i funktionsnavnet står for "ignore case".
Avatar billede olebole Juniormester
01. november 2005 - 20:41 #21
STRing-caseInsensitive-POSition -> stripos  ;o)
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:45 #22
det er så smart det hele - så snart man lige forstår logikken i funktionsnavngivningen!

Med smider i nogen svar så vi kan komme vider? :^P
Avatar billede elskermad.dk Nybegynder
01. november 2005 - 20:45 #23
Forresten nielle: Hvis du selv er i gang med noget lignende - har du så flere søgerobotters navne jeg kan låne? :)
Avatar billede nielle Nybegynder
01. november 2005 - 20:54 #24
Nej sådan noget er jeg nu ikke i gang med.

... og et svar :^)
Avatar billede olebole Juniormester
01. november 2005 - 21:01 #25
- jeg hopper elegant over denne gang ... men takker for tanken  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester