Autor | Zpráva | ||
---|---|---|---|
Chro Profil |
#1 · Zasláno: 29. 9. 2010, 16:07:21
Zdravím,
řeším oříšek jak převádět v textu BBcode tag [map] na HTML tag <img> zajišťující zobrazení mapy pomocí služby Google Static Map. Pro představu: $text = 'Sejdeme se zde: [map]Praha, Karlův most[/map] v 16 hodin.'; //zde zpracování $prevedeny_text = 'Sejdeme se zde: <img class="mapa" src="http://maps.google.com/maps/api/staticmap?center=Praha,Karluv+most&size=400x400&maptype=roadmap&sensor=false" width="400" height="400" alt="Mapa: Praha, Karlův most"> v 16 hodin.'; Důležité je převedení textu do URL z Praha, Karlův most na Praha,Karluv+most. To znamená: - odstranit z textu diakritiku - mezeru (mezery) mezi slovy nahradit znakem + - odstranit případnou mezeru (mezery) před a za znakem , - odstranit veškeré znaky kromě a-z A-Z 0-9 , + - Předpokládám nutnost použití složitého regulárního výrazu. Bohužel, přiznám se, nejsem stále schopen pochopit fungování a zápis složitějších regulárů a dokázal bych to opět vyřešit jen funkcemi explode, implode, str_replace atp., což je fuj. Prosím, zdržte se lamentování nad kohokoli neschopností či neznalostmi, řešte konstruktivně. Díky. |
||
__construct Profil |
#2 · Zasláno: 30. 9. 2010, 10:02:02 · Upravil/a: __construct
Chro:
„dokázal bych to opět vyřešit jen funkcemi explode, implode, str_replace atp., což je fuj.“ Čo je na tomto „fuj“ ?? $text = 'Sejdeme se zde: [map]Praha, Kralův Most[/map] v 16 hodin.'; preg_match('~\[map\](.+?)\[\/map\]~i',$text, $zhody); $polozky = preg_split('~,~',$zhody[1]); //rozdelíme obsah medzi [map] tagmi podľa čiarok foreach($polozky as $polozka){ $polozka = trim($polozka); //odstrámime medzery zo začiatku a konca $polozka = iconv("utf-8", "us-ascii//TRANSLIT", $polozka); // odstránime diakritiku $polozka = preg_replace('~\s~','+',$polozka); // nahradíme medzery pluskami $vysledok[] = $polozka; } $obrazok = '<img class="mapa" src="http://maps.google.com/maps/api/staticmap?center='.implode(',',$vysledok).'&size=400x400&maptype=roadmap&sensor=false" width="400" height="400" alt="Mapa: '.$zhody[1].'">'; echo str_replace($zhody[0],$obrazok,$text); |
||
Chro Profil |
#3 · Zasláno: 30. 9. 2010, 17:47:33
__construct:
Na tvém řešení se mi nezdá nic fuj, na mém bylo fuj 26 řádků. Díky. |
||
Časová prodleva: 15 let
|
0