Autor Zpráva
a3
Profil *
Asi jsem to předtim dal do blbý sekce, tak to se omlouvám.

ten doatz se mi skládá takhle a chci se zeptat, jak mám udělat, aby mi to vyhledávalo i v druhých slovech než jen v začátečních v originalnim nazvu, takhle to vyhledává jen jestli celej ten výraz v databázi začíná na hledaný slovo, asi by to šlo udělat tak, že odstranim tohle ^, ale já zase nechci, aby mi to vyhledávalo i výrazy uprostřed slov


$dotaz .= " LOWER(Originalni_Nazev) REGEXP ('^";  
     
   $dotaz .= implode($array, "') OR LOWER(Originalni_Nazev) REGEXP ('^");  
    
   $dotaz .= "')";  
     
  if( count( $array ) > 1 ){  
     $dotaz .= " OR LOWER(Originalni_Nazev) REGEXP ('^" . addslashes( htmlspecialchars( trim( $string ) ) ) . "')";     
   }

Moderátor Joker: Zpřesnil jsem titulek, původní: „Regulární výraz při hledání“
A možná by to patřilo spíš do databází, nejsem si jistý. Nechávám zatím tady.
Joker
Profil
a3:
aby mi to vyhledávalo i v druhých slovech než jen v začátečních
Tak potom je špatně to ^, to značí začátek řetězce.

ale já zase nechci, aby mi to vyhledávalo i výrazy uprostřed slov
Tak místo ^ dát na začátek hranici slova, \b
a3
Profil *
Když to zaměnim jen za ten znak, tak to nefunguje, pokoušel jsem se použít i všemožný závotky, uvozovky, apostrofy atd a prostě to furt nejde, nemohl by mi někdo naznařit, jak to \b do toho mam přesně vložit, aby to fungovalo?
Joker
Profil
a3:
Normálně, regulární výraz \btext by měl najít text na začátku slova.
Případně by většinou fungovala i mezera (resp. ^ nebo mezera, samotná mezera by nenašla text úplně na začátku řetězce)
a3
Profil *
No a to mi právě nic nenajde, mam to takhle s timhle ^ to hledá v pohodě

$string= mb_strtolower($string, "UTF-8");
   
   $array = preg_split("/[\s,]+/", $string );
      
   foreach( $array as $id=>$value ){  
      $array[$id] = addslashes( htmlspecialchars( $value ) );     
    }  
     
   $dotaz .= " LOWER(Originalni_Nazev) REGEXP ('\b";       
   $dotaz .= implode($array, "') OR LOWER(Originalni_Nazev) REGEXP ('\b");       
   $dotaz .= "')";       
  if( count( $array ) > 1 ){  
     $dotaz .= " OR LOWER(Originalni_Nazev) REGEXP ('\b" . addslashes( htmlspecialchars( trim( $string ) ) ) . "')";     
   }
a3
Profil *
A ještě jsem teda zkusil tam dát tohle ^ s mezerou, asi takhle ' ^', ale bez těch uvozovek a to mi to nenajde taky nic, ale když tam dám jen samotný ^, tak to nachází, ale jen když tak zaříná celej řetězec
a3
Profil *
Prosím, to opravdu nikdo netuší, kde dělám chybu?
Zkoušel jsem všemožný kombinace, našel jsem si několik stránek, jak se to zapisuje a stejně jsem to nedokázal dát dohromady, aby mi to něco našlo. Určitě to bude něco triviálního, jen na to nemůžu přijít

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0