Avatar billede alaflam Nybegynder
29. oktober 2005 - 14:00 Der er 12 kommentarer og
1 løsning

find nærmest tal

Hejsa,

$string = "hej[1] med [2]dig hvor er[3] du henne[4], hvordan går[5] det";

jeg vil lave en funktion der søger i den tekst, og finder nærmest tal til det pågældende ord.

function søgnærmest( "dig") {}
den funktion skulle returner de her to tal (2,3).

Min funktion kom til at være for stor, så jeg tænkte om der var nogen her på eksperten der har en ide hvordan man kunne gøre det.
Avatar billede jakobdo Ekspert
29. oktober 2005 - 14:24 #1
Jeg ville gerne have lavet det med en regexp, men det magtede mine evner ikke! :o(
Så det blev denne løsning: http://www.codebreaker.dk/exp/660130.php
Den vil dog ikke finde tal over 9 eller generelt tal på mere end et ciffer.
Avatar billede alaflam Nybegynder
29. oktober 2005 - 14:30 #2
hvad hvis man søgte efter (hej dig)

hvad sker der så :P
Avatar billede alaflam Nybegynder
29. oktober 2005 - 14:31 #3
måske skal man (explode) den ved alle [0-9].

og derefter tjekke om en af ordene findes, også returner tallet

forstår du hvad jeg mener ?
Avatar billede alaflam Nybegynder
29. oktober 2005 - 14:33 #4
fordi hvis man har det her tekst

$string = "Forventningerne [1] tynger Schalke 04 i disse dage. Efter 0-6 blamagen mod Frankfurt er den ambitiøse Ruhr-klub under maksimalt pres for at levere et tilfreds-stillende [2]resultat i dag ude mod Hamburg og på tirsdag hjemme mod tyrkiske Fenerbahce."

og man søger på "under".

så ender det med koden skal helt ud til [1]. det behøver den i den her samhæng ikke, tallet skulle måske lægge 3 ord væk eller sådan noget.
Avatar billede jakobdo Ekspert
29. oktober 2005 - 14:42 #5
Det må du gerne lige forklare nærmere! :o)
Snakker vi at den skal finde et ord, og så vise noget af teksten på begge side af det søgte?
Hvis der skal søges efter tal, så vil den jo gå helt ud til 1 og henholdsvis 2.
Avatar billede alaflam Nybegynder
29. oktober 2005 - 14:50 #6
hovedpunktet er at den søger efter noget tekst, og finder det nærmeste tal til det pågældende tekst.

men hvis man søger efter "hej dig" som jeg sagde før, de ligger langt væk fra hinanden, og hver af sin egen tætte nummer.

Det er et lille problem :P
Avatar billede jakobdo Ekspert
29. oktober 2005 - 14:56 #7
Jeg fatter ikke hvad du snakker om?
Du startede med at skulle søge efter dig, og den skulle give dig 2 og 3.
Det gør den funktion du har fået.
Udover det, så lykkedes det også at lave en regexp på problemet:
if(preg_match_all('/(\\d+)[\\D]+?dig[\\D]+?(\\d+)/', $string, $matches))
{
echo "<pre>";
print_r($matches);
echo "</pre>";
}

Du må prøve at forklare lidt mere specifik hvad du vil have, jeg kan ikke helt forstå hvad du mener nu?

Hvis vi siger strengen:
$string = "Forventningerne [1] tynger Schalke 04 i disse dage. Efter 0-6 blamagen mod Frankfurt er den ambitiøse Ruhr-klub under maksimalt pres for at levere et tilfreds-stillende [2]resultat i dag ude mod Hamburg og på tirsdag hjemme mod tyrkiske Fenerbahce."

Og jeg søger på: under, hvad skal jeg så have retur?
Avatar billede alaflam Nybegynder
29. oktober 2005 - 15:03 #8
jeg tror du hidser dig for meget op ...

stille og roligt, hvis du ikke kan forstå hvad jeg skriver, så bliver det svært at forklare dig mere end det jeg har sagt.

tak for hjælpen.

du må gerne svar.
Avatar billede jakobdo Ekspert
29. oktober 2005 - 15:07 #9
Jeg hidser mig ikke op! :o)
Jeg forstår bare ikke hvad du vil!
Se hvad du skrev her:
jeg vil lave en funktion der søger i den tekst, og finder nærmest tal til det pågældende ord.

function søgnærmest( "dig") {}
den funktion skulle returner de her to tal (2,3).

Hvad er der at misforstå?

Jeg vil meget gerne hjælpe, men hvis jeg ikke helt forstår hvad det er jeg skal lave/hjælpe dig med, så har vi et problem.

Prøv at forklar den med schalke mere præcist.
Avatar billede alaflam Nybegynder
29. oktober 2005 - 15:11 #10
Løsning er nok den sidste med regulær udtryk, jeg håber den fungere med japansk tegn osv.
Avatar billede jakobdo Ekspert
29. oktober 2005 - 15:27 #11
Et svar!
Avatar billede alaflam Nybegynder
29. oktober 2005 - 15:28 #12
preg_match_all("@\[:([0-9]+)\]\\D+".$word."\\D+\[:([0-9]+)\]@is", $fulltext, $matches);

Her er min løsning.

Jeg venter på et svar fra dig :P

$fulltext = "oijasdas [:34] oiadw [:32] bla blah";
Avatar billede jakobdo Ekspert
29. oktober 2005 - 15:45 #13
Takker for point!
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknologirådgiver inden for AI-området til Teknologiafdelingen

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kryptokustode til opbygning af Forsvarets nye IT-platform

Capgemini Danmark A/S

Java Engineer