Portál AbcLinuxu, 3. května 2025 13:40

Dotaz: PHP str_replace s ignore accent

22.7.2024 00:07 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
PHP str_replace s ignore accent
Přečteno: 585×
Odpovědět | Admin

Zdravím ..

Zrovna si čtu tento dotaz, který je blízko tomu, co hledám ... ale není to úplně ono ...

Vysvětlím mé pochody :-D

zadám v prohlížeči do vstupního pole hledaný výraz. Řekněme "ate".

Výraz se hledá v databázi, a nejde se Pátek. To je dobře.

Teď chci výsledky hledání zobrazit, a chtěl bych, aby bylo vidět "Pátek", tedy hledaný výraz v nalezeném udělat tlustě.

Snažím se najít v PHP nejaké ignore accent hledání / nahrazení, ale s tímhle jsem si zatím nezadal, a nevím z kterého konce ( možná už v MySQL to udělat - nevím ) začít.

Zatím se pokouším iconv-em srovnat oba výrazy ( hledaný i nalezený ) a pak možná najít pozici strposem. No tady tápu.

Navrhne někdo zkušenějsí jinou variantu ?

 

Děkuji M.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.7.2024 00:21 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP str_replace s ignore accent
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejlepší bude celé to udělat v MySQL.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
22.7.2024 08:12 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: PHP str_replace s ignore accent
Ahoj,

no zajímavá myšlenka, protože MySQL už vlastně tu schopnost ( ignore accent ) má, jen tápu v tom, jak to provést .. prosté REPLACE mi Pátek nenajde. ('Datel' jo). (Hledám "ate" ..)

Teď čtu tady v podstatě podobný dotaz, odpovědi jsou kostrbaté..

Ale díky za pokus o nasměrování.

M.
23.7.2024 22:17 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP str_replace s ignore accent
Najde. Stačí použít LIKE a wildcards.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
25.7.2024 21:23 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: PHP str_replace s ignore accent
Děkuji za nasměrování ... moje pokusy ale skončili nezdarem ... možná nasměrujete víc.

Příklad : hledání v tabulce ObceCZ :
SELECT Obec, @pok:=(Obec LIKE '%ate%') as vyrez, replace( Obec, @vyrez , concat('ccc', @vyrez, 'vvv' ) ) as Obecz FROM Obce_CR; 
 

Obecz je null ... nějak to nedokážu skloubit.. ono i ta proměnná @pok je 0, ne null ale 0 .. nevím .. na tohle nestačím...

M.
Řešení 1× (Milan Uhrák (tazatel))
22.7.2024 09:49 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: PHP str_replace s ignore accent
Nakonec jsem to přece jen udělal v PHP ... byl to trochu opruz, ale funguje to.

Výraz i hodnotu jsem převed pomocí $iaex = iconv( 'utf-8','ASCII//TRANSLIT', $exp );

Našel jsem pozici : $opos = stripos( $iahodn, $iaex );

A pak přes mb_substr jsem upravil skutečnou hodnotu. Je to jen čeština v UTF, asi na cyriliku nebo rozsypaný čaj by to tak nefungovalo. Nevím, nezkoušel jsem.

Ale děkuji za snahu ..

M

22.7.2024 00:47 X
Rozbalit Rozbalit vše Re: PHP str_replace s ignore accent
Odpovědět | | Sbalit | Link | Blokovat | Admin
Misto PHP bych sel cestou highlight.min.js..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.