Zadejte hledaný výraz...

Přepis funkce

swarca
verified
rating uzivatele
(9 hodnocení)
19. 5. 2015 13:32:38
Ahoj, mám kód součástí funkce: http://pastebin.com/h4iuTQ72
abych to vysvětlil, když na webu bude v textu napsáno:

((articles-1))

tak mi to vytvoří funkci
articlesCategory(1)
jde mi to to, abych nemusel vypisovat takhle všechny kategorie, protože to dost zatěžuje načítání, abych např. přes ?regulerní výrazy to napsal tak, abych nemusel vypisovat přes while všechny možnosti, ale aby to bylo napsané tak, že když bude v textu:

((articles-cislo))

tak to vypíšu funkci:
articlesCategory(cislo),
místo toho, aby to projelo všechny čísla třeba od 1-30, rozumíme si?
19. 5. 2015 13:32:38
https://webtrh.cz/diskuse/prepis-funkce#reply1114098
Nerozumíme si, nevím zda-li někdo z kolegů pochopil ale já po první větě přestávám chápat.
19. 5. 2015 13:46:26
https://webtrh.cz/diskuse/prepis-funkce#reply1114097
Já to sice chápu, ale až na specifické řešení to nemá příliš smysl. V této konkrétní fce se totiž načítají v rámci toho while cyklu jednotlivé řádky z databáze. A tomu se stejně nevyhnete.
Jinak ve všeobecnosti, na to co požadujete, slouží fce preg_replace
PHP: preg_replace - Manual
Navíc preg_replace je o 60-80% pomalejší, než str_replace, takže ten while cyklus bude ve výsledku i rychlejší.
19. 5. 2015 14:25:14
https://webtrh.cz/diskuse/prepis-funkce#reply1114096
tomve
verified
rating uzivatele
(22 hodnocení)
19. 5. 2015 14:38:34
PHP: preg_match - Manual
preg_match('/articles-+/', $string, $match);
if($match = $articles) {
$clearHtml = str_replace('

((articles-'.$articles.'))

', articlesCategory($articles), $clearHtml);
}
+-
otázka je, jaká je to funkce articlesCaregory(), jestli je levnější str_replace nebo preg_match
---------- Post added 19.05.2015 at 14:49 ----------
Napsal mytrix;1195862
...
Navíc preg_replace je o 60-80% pomalejší, než str_replace, takže ten while cyklus bude ve výsledku i rychlejší.
Rychlejší to je, ale v str_replace má fnkci articlesCategory() a tam může být tolik věci, co to zdrží nebo taky ne
19. 5. 2015 14:38:34
https://webtrh.cz/diskuse/prepis-funkce#reply1114095
Fido123
verified
rating uzivatele
(13 hodnocení)
19. 5. 2015 14:56:13
Zkus tohle
19. 5. 2015 14:56:13
https://webtrh.cz/diskuse/prepis-funkce#reply1114094
swarca
verified
rating uzivatele
(9 hodnocení)
20. 5. 2015 19:10:58
Díky za odpovědi, nakonec jsem získal toto řešení:
// ulozime si vsechny idcka clanku do $matches
preg_match_all('/((articles-(+)))/', $clearHtml, $matches);
// jeden po druhym replacujem
foreach($matches as $key => $articleId) {
$regExp = "/<(+)>(*)((articles-{$articleId}))(*)/U";
$clearHtml = preg_replace($regExp, articlesCategory($articleId), $clearHtml);
}
20. 5. 2015 19:10:58
https://webtrh.cz/diskuse/prepis-funkce#reply1114093
Fido123
verified
rating uzivatele
(13 hodnocení)
20. 5. 2015 20:46:13
Napsal swarca;1196175
Díky za odpovědi, nakonec jsem získal toto řešení:
// ulozime si vsechny idcka clanku do $matches
preg_match_all('/((articles-(+)))/', $clearHtml, $matches);
// jeden po druhym replacujem
foreach($matches as $key => $articleId) {
$regExp = "/<(+)>(*)((articles-{$articleId}))(*)/U";
$clearHtml = preg_replace($regExp, articlesCategory($articleId), $clearHtml);
}
Tak to asi bude fungovat, nicméně bude to mnohem pomalejší než řešení, které jsem ti poslal. Když se v textu bude to klíčové slovo vyskytovat 50x, tak ten tvůj kód bude celý řetězec procházet 51x, kdežto můj vždy pouze 1x. To sice samo o sobě u běžné stránky vadit nebude, ale když tak budeš dělat všechno, tak se to nasbírá.
20. 5. 2015 20:46:13
https://webtrh.cz/diskuse/prepis-funkce#reply1114092
Pro odpověď se přihlašte.
Přihlásit