CruellaDeVille Skrevet 2. november 2007 Del Skrevet 2. november 2007 Jeg skal søke etter en streng i en større streng, men slik xpath fungerer nå er det case-sensitivt. Har funnet flere steder at det finnes en xpath-funksjon som heter lower-case, men parseren min protesterer vilt over denne. Jeg får denne feilmeldingen: Warning: DOMXPath::query() [function.DOMXPath-query]: xmlXPathCompOpEval: function lower-case not found in /H I følge Eclipse tutorial/help finnes lower-case, se her http://help.eclipse.org/help32/index.jsp?t...seFunction.html Finnes det eller finnes det ikke en funksjon som heter lower-case i xpath? Jeg blir forvirra Jeg spør i php-forumet fordi det ikke finnes noe egnet xml-forum så vidt jeg er i stand til å finne (og at systemet mitt er i php) For de veldig interesserte ... litt kode: public function advanced_search($where, $term){ $root = $this->dom->load_document_and_root(ARTICLEFILE, 'articles'); $term = strtolower($term); $xpath_expr = "/articles/article[contains(lower-case($where), '$term')]"; //var_dump($xpath_expr); $xpath = new DOMXPath($this->dom); $nodes = $xpath->query($xpath_expr); if(!is_null($nodes)){ return $this->build_articles($nodes); } return null; } Lenke til kommentar
CruellaDeVille Skrevet 2. november 2007 Forfatter Del Skrevet 2. november 2007 (endret) Jeg ser jeg har en logisk kortslutning her. Never mind. Det er elementinnhold i $where som skal være lowercase, ikke $where og $term. Men har du en god løsning er jeg lutter øre.. ehm.. øye Endret 2. november 2007 av CruellaDeVille Lenke til kommentar
Peter Skrevet 3. november 2007 Del Skrevet 3. november 2007 Hva er eksempel på $where og $term? Du kan jo gjøre nodeinnhold til lowercase med lower-case(.) evt. lower-case(<sti>) dersom $where er en sti? Lenke til kommentar
CruellaDeVille Skrevet 3. november 2007 Forfatter Del Skrevet 3. november 2007 $where er enten content eller title, $term kan være hva som helst, feks Harry Potter. Og siden "Harry Potter" og "harry potter" ikke er det samme får jeg ikke treff. Min logiske kortslutning var at $where skulle transformeres, men det behøver den ikke. Lenke til kommentar
CruellaDeVille Skrevet 3. november 2007 Forfatter Del Skrevet 3. november 2007 Jeg løste det slik, hvis noen er interessert public function advanced_search($where, $term){ $root = $this->dom->load_document_and_root(ARTICLEFILE, 'articles'); $term = utf8_encode(strtolower($term)); $upper = utf8_encode("'ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ'"); $lower = utf8_encode("'abcdefghijklmnopqrstuvwxyzæøå'"); $xpath_expr ="/articles/article[contains(translate($where, $upper, $lower), '$term')]"; $xpath = new DOMXPath($this->dom); $nodes = $xpath->query($xpath_expr); if(!is_null($nodes) && $nodes->length >=1){ return $this->build_articles($nodes); } return null; } Lenke til kommentar
Tias Skrevet 13. november 2007 Del Skrevet 13. november 2007 Hmm. Gjør ikke du akkurat det motsatte av det du sa nå? Du oversetter $where og ikke $term? Lenke til kommentar
CruellaDeVille Skrevet 14. november 2007 Forfatter Del Skrevet 14. november 2007 Nei, jeg oversetter innholdet i $where, tias. $term har jeg allerede oversatt ved hjelp av strtolower. Kommer dere i mål? Lenke til kommentar
Tias Skrevet 14. november 2007 Del Skrevet 14. november 2007 Hehe, klart vi gjør. Men jeg må si jeg er lite begeistret for rapporten, HUIN-folk har tekst på hjernen! Men da skjønner jeg, du hadde et litt annet utgangspunkt enn vi hadde. I think. translate ser ut til å fungere glitrende med både store og små bokstaver, så løsningen er i alle fall der :-) PS: Morsomt å finne trådene dine her, helt tilfeldig gjennom google. Skal ikke stå på innsats i alle fall! :-) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå