Avatar billede guest Nybegynder
23. januar 2003 - 15:22 Der er 16 kommentarer

søg der ignorer spaces

Hvordan laver jeg en routine, der søger et ords positionen i en streng, men ignorer spaces? Nemt!

eks.
søg hemmelig i teksten

"Dette er en meget hem melig tekst"
resultatet skulle gerne være 19 her

NB Det dur at fjerne alle mellemrum først!
Avatar billede madd Nybegynder
23. januar 2003 - 15:31 #1
$str = "Dette er en meget hem melig tekst";

function search ($str, $search) {
  $str = str_replace(" ","", $str);
  return strpos($str, $search);
}

print search($str, "hemmelig");



Det burde gøre tricket - har dog ikke testet.

/Mattias
Avatar billede emileej Nybegynder
23. januar 2003 - 15:35 #2
function unspacedPos($search, $text){
    $text=str_replace(" ","",$text);
    return strpos($text,$search);
}

echo "Vores ord er på position #".unspacedPos("hemmelig", "Dette er en meget hem melig tekst");

E-)mil
Avatar billede emileej Nybegynder
23. januar 2003 - 15:36 #3
Æv så - for sent på den :(
Avatar billede guest Nybegynder
23. januar 2003 - 15:40 #4
Men så har du jo lige præsis fjernet alle mellemrum!!

Forestil dig at jeg skal grabbe alt mellem to tag

$str = "bla bla %start%dette er tekst%start %osv";
læg mærke til mellemrummet i %start %
Så jeg kan ikke skrive
$start = strpos($str, "%start%");
$slut = strpos($str, "%slut%");

?
Avatar billede tipsen Nybegynder
23. januar 2003 - 15:40 #5
Begge udgaver returnerer vel positionen hvor ordet starter i strengen uden mellemrum? - ikke i den originale streng...
Avatar billede guest Nybegynder
23. januar 2003 - 15:47 #6
Præsis
Avatar billede guest Nybegynder
23. januar 2003 - 15:53 #7
Og det skulle staves præcis
Avatar billede jakoba Nybegynder
23. januar 2003 - 15:57 #8
en lille rettelse i madd's kode skulle gøre det:

$str = "Dette er en meget hem melig tekst";

function search ($str, $search) {
    $str1 = str_replace(" ","", $str);
    $res = strpos($str1, $search);
    for ( $i=0; $i<$res; $i++ ) {
        if ( substr( $str, $i, 1 ) == " " ) $res += 1;
    }
    return $res;
}

print search($str, "hemmelig");

mvh JakobA
Avatar billede tipsen Nybegynder
23. januar 2003 - 16:29 #9
smart :-)

evt:

        if ( substr( $str, $i, 1 ) == " " ) $res++;
Avatar billede guest Nybegynder
23. januar 2003 - 16:33 #10
Sådan jakoba, det virker jo perfekt!!
Kom med et svar og du skal få dine point!

Takker!!
Avatar billede madd Nybegynder
23. januar 2003 - 18:10 #11
guest; en anden gang må jeg bede dig om at læse dit spørgsmål igennem før du poster.

"NB Det dur at fjerne alle mellemrum først! "

Dette var præcis hvad du senere "brokkede" dig over :)

/mattias
Avatar billede emileej Nybegynder
23. januar 2003 - 21:09 #12
Yep - jeg så da oss at pos'en ikk var ift. til den nye streng (uden spaces), men kunden har altid ret.

Et godt råd:
Jo klarer du formulerer spørgsmål på eksperten, des hurtigere får du et korrekt svar. Den tid du bruger på at formulere et koncentreret spørgsmål er meget mindre end den tid du bruger på alt det rod, der kommer af et "sjusket" (no offence) formuleret spørgsmål. Jeg taler af erfaring her :)

E-)mil
Avatar billede jakoba Nybegynder
23. januar 2003 - 21:40 #13
Jeg synes faktisk mest det er madd's svar, jeg tilføjede blot en krølle :-))
svar igen madd
Avatar billede guest Nybegynder
24. januar 2003 - 08:54 #14
madd; skal et lille "ikke" nu skille os ;-)
my mistake!
Avatar billede guest Nybegynder
24. januar 2003 - 08:55 #15
emileej: Det er hermed taget til efterretning!
Avatar billede guest Nybegynder
24. januar 2003 - 08:57 #16
Ja svar igen madd
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