Gå til innhold

Case-insensitivt Xpath-query, how?


Anbefalte innlegg

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
Videoannonse
Annonse

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
  • 2 uker senere...

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...