Avatar billede sj.netomia Nybegynder
04. september 2003 - 02:00 Der er 30 kommentarer og
1 løsning

preg_match problemer. (søgemønster)

Hej eksperter.

Jeg har store problemer med at hente en linie med preg_match

linien i mit script

preg_match("/<td width=\"28%\" class=\"Listing1\">&nbsp;<a href=\"\/accdb\/viewUser.asp?IDU=3482075\">&nbsp;([^&]*)&nbsp;<\/a>&nbsp;<\/td>/",$content,$result3);
print $result3;

print af $result3 = Array  altså ingenting.

og det den skal hente ser således ud.

<td width="28%" class="Listing1">&nbsp;<a href="/accdb/viewUser.asp?IDU=3482075">&nbsp;Hans.og.Grethe&nbsp;</a>
    &nbsp;</td>

Nogen der kan se en fejl i scriptet.

P.S jeg har flere preg_match kommandoer bare uden <a href og &nbsp; så det er ikke noget andet i scriptet den kan kun være den linie.

Hjælp nu har jeg siddet med det i lang tid og er ved at blive skør i hovedet.
Avatar billede squashguy Nybegynder
04. september 2003 - 02:35 #1
du skal nok have en backslash foran ?

viewUser.asp?

viewUser.asp\?
Avatar billede detox Nybegynder
04. september 2003 - 03:14 #2
Prøv backslash på < og >:

preg_match("|td width=\"28%\" class=\"Listing1\"\>&nbsp;\<a href=\"/accdb/viewUser.asp\?IDU=3482075\"\>&nbsp;([^&]*)&nbsp;\</a\>&nbsp;\</td\>|", $content, $result3);
Avatar billede detox Nybegynder
04. september 2003 - 03:15 #3
Eller:

preg_match("|\<td width=\"28%\" class=\"Listing1\"\>&nbsp;\<a href=\"/accdb/viewUser.asp\?IDU=3482075\"\>&nbsp;([^&]*)&nbsp;\</a\>&nbsp;\</td\>|", $str, $result3);
Avatar billede detox Nybegynder
04. september 2003 - 03:19 #4
Hov sådan:

preg_match("|\<td width=\"28%\" class=\"Listing1\"\>&nbsp;\<a href=\"/accdb/viewUser.asp\?IDU=3482075\"\>&nbsp;([^&]*)&nbsp;\</a\>&nbsp;\</td\>|", $content, $result3);
Avatar billede erikjacobsen Ekspert
04. september 2003 - 06:42 #5
Du skal i hvert fald ikke bare skrive den ud, for så får du "Array".
Prøv som en hurtig test:

print_r($result3);
Avatar billede sj.netomia Nybegynder
04. september 2003 - 08:38 #6
Prøvede at tage den sidste kommentar fra detox.
men det virker stadig ikke.

Prøv jeg f.eks bruger detox sidste kommentar

$find_bruger = preg_match("|\<td width=\"28%\" class=\"Listing1\"\>&nbsp;\<a href=\"/accdb/viewUser.asp\?IDU=3482075\"\>&nbsp;([^&]*)&nbsp;\</a\>&nbsp;\</td\>|", $content, $result3);
print $find_bruger;

så udskriver $find_bruger = 0

hjælp hjælp.....
Avatar billede sj.netomia Nybegynder
04. september 2003 - 08:45 #7
hvis der er nogen der har en anden løsning på mit problem altså via en anden kommando så er jeg åben for muligheder. det jeg gerne vil have den til at printe ud i $find_bruger er Hans.og.Grethe

The rest is all up to you :)
Avatar billede erikjacobsen Ekspert
04. september 2003 - 08:46 #8
print_r($result3);
Avatar billede sj.netomia Nybegynder
04. september 2003 - 10:01 #9
hvis jeg printer print_r($result3); for jeg resultat Array ( )
Avatar billede erikjacobsen Ekspert
04. september 2003 - 10:19 #10
Men så er det fordi den ikke matcher noget - ellers ville du have kunnet
se et indhold i dit array (noget som almindelig print ikke kan)

Kan du give mig een linie, som du gerne vil have matchet?
Avatar billede sj.netomia Nybegynder
04. september 2003 - 11:35 #11
ja den linie jeg gerne vil have matchet er denne her.

<td width="28%" class="Listing1">&nbsp;<a href="/accdb/viewUser.asp?IDU=3482075">&nbsp;Hans.og.Grethe&nbsp;</a>
    &nbsp;</td>

Og det den skal printe er Hans.og.Grethe

forstår ikke hvorfor et ikke virker, kan det være noget med &nbsp; ?
Avatar billede websmith Nybegynder
04. september 2003 - 11:44 #12
Hvad med denne regex:

preg_match("IDU=3482075\">&nbsp;([^&]*)", $content, $result3);

Altså en meget mindre søgning.
Avatar billede websmith Nybegynder
04. september 2003 - 11:45 #13
Jeg kan anbefale Expresso programmet som er en regex tester og bygger. Super god, da man kan se på group captures mv.

http://www12.brinkster.com/ultrapico/

Jeg har testet ovenstående regex i dette program. Meget hurtigere end at skuller rekompilere et helt program, eller vente på en side bliver loaded i en browser
Avatar billede websmith Nybegynder
04. september 2003 - 11:47 #14
Den funker stadigvæk med

="/accdb/viewUser.asp\?IDU=3482075">&nbsp;([^&]*)

som regex.
Avatar billede websmith Nybegynder
04. september 2003 - 11:49 #15
Eller eventuelt hvis du skal have mulighed for at dit IDU i url'en foran Hans.og.Grethe kan være andre end lige den ovenstående, så kan du bruge følgende:

="/accdb/viewUser.asp\?IDU=(?:[\d]*)">&nbsp;([^&]*)

Hvor den første gruppe er en non capturing group, dvs. den matcher på den, men tager den ikke med i resultatet.
Avatar billede websmith Nybegynder
04. september 2003 - 11:52 #16
Hvorfor har du afvist mine svar??
De er korrekte og fungerer.
Avatar billede sj.netomia Nybegynder
04. september 2003 - 11:52 #17
den udskriver ingenting heller ikke hvis jeg laver en mindre søgning. :(
Avatar billede sj.netomia Nybegynder
04. september 2003 - 11:53 #18
jeg kan ikke få de til at fungere, men prøv lige at smide hele linien altså
preg_match og hele svineriet. så skal jeg se om det var mig der lavede en fejl :)
Avatar billede websmith Nybegynder
04. september 2003 - 11:54 #19
Så prøv at forklare præcist hvad det er du prøver på at udføre, og hvorfra dine data kommer, og eventuelt, hvis der er difference imellem de test data du har kaster herop og dine "live" data.

For med de test data du har smidt, og de regex som jeg har smidt, så får du det du har bedt om
Avatar billede sj.netomia Nybegynder
04. september 2003 - 11:57 #20
måske kan dette hjælpe dig / jer.

jeg henter data fra en QXL auktion hvis jeg gerne vil have min laptop til at skrive om jeg er blevet overbudt eller ikke :)

$file = new GetWebObject("my.qxl.dk", 80, "/accdb/viewItem.asp?IDI=9139432&ListingType=0&ListingSort=1");
$content = $file->get_content();
preg_match("|\<td width=\"28%\" class=\"Listing1\"\>&nbsp;\<a href=\"/accdb/viewUser.asp\?IDU=3482075\"\>&nbsp;([^&]*)&nbsp;\</a\>&nbsp;\</td\>|", $content, $result3);
print_r($result3);
Avatar billede websmith Nybegynder
04. september 2003 - 11:57 #21
prøv at skrive hele din $content variabel ud og læg den herop.

Skifter indholdet i denne variabel, eller er det altid det samme??

Du skal jo tænke på at hvis nummeret skifter i IDU variablen i den url lige før den tekst du prøver at hente, så vil en regex ikke fungere med mindre at du også taget højde for dette.
Avatar billede websmith Nybegynder
04. september 2003 - 12:00 #22
Hvorfor ikke bare søge efter Hans.og.Grethe og hvis den ikke finder det, så er du blevet overbudt?
Avatar billede sj.netomia Nybegynder
04. september 2003 - 12:00 #23
ok der fik jeg noget output fra det sidste svar du skrev output =
Array ( [0] =>  Hans.og.Grethe [1] => Hans.og.Grethe )
Avatar billede squashguy Nybegynder
04. september 2003 - 12:01 #24
preg_match("/<td width=\"28%\" class=\"Listing1\">&nbsp;<a href=\"\/accdb\/viewUser.asp\?IDU=3482075\">&nbsp;([^&]*)&nbsp;<\/a>&nbsp;<\/td>/",$content,$result3);

print $result3[1];
Avatar billede sj.netomia Nybegynder
04. september 2003 - 12:02 #25
fordi jeg gerne vil lave det til forskellige auktioner til mine venner som har forkellige navne på QXL.
Avatar billede sj.netomia Nybegynder
04. september 2003 - 12:05 #26
squashguy : virker perfekt smid lige et svar :)
Avatar billede websmith Nybegynder
04. september 2003 - 12:06 #27
Nå men det var da godt. at det sidste fungerede, så var det altså fordi IDU variablen ændrede sig? eller hvad
Avatar billede squashguy Nybegynder
04. september 2003 - 12:08 #28
ok
en forenklet udgave kunne være

preg_match("/<td.*>.*<a.*>&nbsp;([^&]*)&nbsp;/",$content,$result3);
print $result3[1];
Avatar billede websmith Nybegynder
04. september 2003 - 12:09 #29
Ja men problemet er bare at det kan godt være squashguy's svar fungerer på dit navn, som jo indikerer IDU=3482075, men for at få det til at virke på dine venner, så skal din regex tage hensyn til IDU, og det gør squashguy's svar ikke.
Avatar billede websmith Nybegynder
04. september 2003 - 12:12 #30
Squashquy har du testet dit sidste og forenklede udgave??
Avatar billede sj.netomia Nybegynder
04. september 2003 - 12:19 #31
ja det kan jeg godt se var vist lige lidt hurtig... :) nå men jeg prøver mig frem tak for hjælpen allesammen ;)
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