O houbách

Nápady a připomínky k vývoji těchto stránek


Všechny své dobré (i jiné:) nápady, připomínky, bugy, atd. související s vývojem těchto stránek, prosím pište do této diskuse. Každý názor je vítán!


Seřazení podle vláken | Seřadit podle času | Pouze vlákna

Automatická oprava diakritiky rozbije linky, 20.10.2015 00:27, Tori(m)

Ahoj admine, bylo by možné neprovádět automatické opravy diakritiky (konkrétně přidávání mezery za každou tečku) uvnitř makra [ link ]? Když dám odkaz např. na nějaký .jpg soubor, přidá se před příponu mezera a odkaz nefunguje. (viz poslední příspěvky z určovny)

Re: Automatická oprava diakritiky rozbije linky, 20.10.2015 00:28, Tori(m)

(Samozřejmě jsem myslela interpunkci, ne diakritiku. )

Re: Re: Automatická oprava diakritiky rozbije linky, 25.10.2015 18:51, admin(m)

Ahoj,

kdybych věděl jak, tak ano Ale zjistil jsem, že mé chabé znalosti regulárních výrazů na to asi nestačí

Pokud bys ho ale chtěla napsat, tak rád přidám

Tady je doplňování mezer:
$punctuation = ', . ';
$text = preg_replace('/(['. $punctuation. '])[\s]*/', '\1 ', $text);

A tady převod na odkaz:
$pattern="/\[link\=\"(. *?)\"\](. *?)\[\/link\]/";
$replacement="<a href='\\1' target='_blank' rel='nofollow'>\\2</a>";
$text = preg_replace($pattern, $replacement, $text);

Prozatím jsem alespoň přidal "nesystémovou" výjimku pro *.jpg a *.gif, aby se na ně doplňování mezer nevztahovalo, takže i tvé odkazy v určovně teď fungují.

Re: Re: Re: Automatická oprava diakritiky rozbije linky, 03.11.2015 20:31, Tori(m)

No, vzhledem k tomu, že jde de facto o normalizaci dat a ne jejich odlišné zobrazení, by se opravování mezer mohlo provádět u každého příspěvku jen jednou, před uložením do DB. Tím pádem by nevadilo, pokud by nahrazovací funkce byla o chlup pomalejší.
Zpracování textu jen mimo makra bych pak řešila callbackem:

$func = function($matches) {
// případně i další normalizace
return $matches[1]. preg_replace('~([. , ])\s*~', '\\1 ', $matches[2]). $matches[3];
};
$text = preg_replace_callback('~(^|\\[/link\\])(. *)(\\[link\\]|$)~mU', $func, $text);

Alternativně se u hledání textu mimo makra dá použít kladná aserce, ale je to o trochu pomalejší, než obyč. subpattern. Nic lepšího mi nenapadlo. :-/ Příště nejdřív zkusím vymyslet řešení, než budu dávat podobné návrhy. :D

Re: Re: Re: Automatická oprava diakritiky rozbije linky, 03.11.2015 20:32, Tori(m)

A koukám, že výjimka platí i pro . pdf, to je prima, díky.


Zobrazovaný počet vláken: 10 20 30