Autor Zpráva
4li3n
Profil
Dobrý den,

chci se zeptat, jak mám vyescapovat tento řetězec, aby mi preg_replace nevratilo NULL (chyba)..

Pokouším se o to už nějakou chvilku a ne a ne se dopracovat k cíly a myslím, že je problém prostě tady :-(

$replace[]='<a href="/cs/info/'.$sl['id'].'-'.text_in_url($sl['title']).'.html" title="'.$sl['title'].'">'.$klic.'</a>';
Majkl578
Profil
Escapovat pomocí funkce preg_quote. V patternu chybí delimitery. Otázka je, zda je použití reguláru potřeba.
4li3n
Profil
Díky, ale úspěchu jsem se nedočkal :-(

   
$slovnik=get_slovnik($conn,$db);
$preg_arrays=make_preg_arrays($slovnik);

$anotace=preg_replace($preg_arrays['searching'],$preg_arrays['replacement'],$anotace);


a funkce make arrays
//slovnik = asociativni pole s klici ['title'],['keyword'],['content'],['id'],['hidden'],['lang'],
function make_preg_arrays($slovnik){
  //$slovnik['keyword']  ======  klicova slova ktera budeme nahrazovat, oddelovacem je ";"
  //   print_r($slovnik);
    
  $preg_arrays['searching']=array();
  $preg_arrays['replacement']=array();
  foreach($slovnik as $sl){
     $keywords=explode(";",$sl['keyword']);
     foreach($keywords as $klic){
        $preg_arrays['searching'][]=preg_quote($klic);    
        $preg_arrays['replacement'][]=preg_quote('<a href="/cs/info/'.$sl['id'].'-'.text_in_url($sl['title']).'.html" title="'.$sl['title'].'">'.$klic.'</a>');                         
     }
  }  
  
  
  return $preg_arrays;

}
Majkl578
Profil
Majkl578:
V patternu chybí delimitery.
Např. ~ na začátku i na konci.
Nestačilo by použít str_replace?
AM_
Profil
Přesně tak, vždyť žádné regulární výrazy nepoužíváš, tak proč tam máš preg_replace
4li3n
Profil
Stačilo, on se záměr těch funkcí od počátku pozměnil, předím by str_replace nestačilo, nyní už ano. Proto mi to tam zůstalo :-) Díky za rady, nějak jsem se s tím popral

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