Autor | Zpráva | ||
---|---|---|---|
Lucyk Profil |
Dobrý den,
mám kód se třemi proměnnými echo ("<a href=\"stranka.php?$nazev1&$nazev2&$nazev3\">$nazev1 $nazev2 $nazev3</a> "); který mi vypisuje na řádku následující např. zima sport hokej (mezera) zima sport lyzovani (mezera) zima sport brusleni (mezera) leto sport plavani (mezera) leto sport fotbal .... atd. Marně se snažím udělat to, aby při výpisu toto 3tří slovní spojení, pokud se dojde na konec šířky stránky, tak začínalo automaticky na novém řádku a nebylo rozdělené, např. zima sport (na prvním řádku) a brusleni (už automaticky skáče na řádek druhý, neboť je konec šířky stránky). A pak ještě pokud se jedná o proměnnou, která obsahuje víceslovný název, tzn. $nazev1=zima $nazev2=sport $nazev3=sjezdove lyzovani, tak v tomto případě dojde také k zalomení, které vypadá následovně zima sport sjezdove (první řádek) a lyzovani (druhý řádek). Zkoušela jsem použít např. <td><tr> ... </td></tr> aby to bylo v buňce, ale to mi nefunguje, anebo jsem to asi dávala špatně. Pak jsem hledala možnost pevného spojení těchto tří proměnných, ale nevím, jestli to nějak jde? Napadá prosím někoho, jak by se dalo tohle vyřešit, aby pokud odkaz dojde na konec stránky a ještě jeho 3tří slovní spojení pokračovalo, aby automaticky začal na řádku novém? Děkuji |
||
Tomášeek Profil |
#2 · Zasláno: 26. 11. 2016, 16:21:48
Lucyk:
Vlož mezi jednotlivá slova nedělitelnou mezeru. Evidentně ji znáš, ale používáš ji tam, kde být nemá (padding/margin). Tam, kam patří, ji však nedáváš. |
||
pcmanik Profil |
Lucyk:
echo '<a href="stranka.php?'. rawurlencode($nazev1) .'&'. rawurlencode($nazev2) .'&'. rawurlencode($nazev3) .'">'. $nazev1 .' '. $nazev2 .' '. $nazev3 .'</a>'; |
||
Lucyk Profil |
#4 · Zasláno: 26. 11. 2016, 16:39:19
Tomášeek a pcmanik:
Děkuji, zkusila jsem variantu echo ("<a href=\"stranka.php?$nazev1&$nazev2&$nazev3\">$nazev1 $nazev2 $nazev3</a> "); a i druhou uvedenou a už jsem poznala změnu, nicméně ještě jeden dotaz, který na to navazuje, ale to už si nejsem jistá, zda to jde nějak ošetřit? např. parametr $nazev3 bude obsahovat slovní spojení 3 slov a pokud se narazí na konec stránky, tak automaticky dojde k zalomení této proměnné a pokračuje výpis na druhém řádku Správně by měl vypsat na jednom řádku -> zima ($nazev1) sport ($nazev2) ledni hokej ($nazev3), ale jelikož jde o konec (kraj) stránky, tak dojde k jeho zalomení a vypíše -> zima ($nazev1) sport ($nazev2) ledni <- na prvním řádku a slovo hokej (které je součástí $nazev3), tak vypíše na řádku druhém. Existuje i na tohle nějaký kód, který by např. automaticky vlož do proměnné pevnou mezeru mezi slovy? V proměnné ($nazev3) mám i třeba sousloví ze 3tří, 4, 5ti slov ... Děkuji |
||
Bubák Profil |
#5 · Zasláno: 26. 11. 2016, 16:56:46
Jinou možností je obalit sousloví spanem a deklarovat mu v CSS
whitespace: nowrap;
|
||
pcmanik Profil |
Lucyk:
Nepoužívaj nedeliteľné medzery na odsadenie obsahu. Na to slúži padding a margin. V mojom kóde som ti ošetril premenné ktoré dávaš do url adresy odkazu. Aj keď si teraz môžeš byť na 100% istá že tam žiadny zlý znak nebude. Nieje dôvod to neošetriť. Echo nieje funkcia, ale je to jazykový konštruktor. Síce umožňuje používanie zátvoriek ako klasická funkcia. Ale je bežným štandartom ich nepísať. Naviac ušetríš dve stlačenia klávesnice. |
||
Lucyk Profil |
Bubák:
Tato možnost funguje, ale všechno mám pak na jednom řádku a místo toho, aby pokračovalo nové sousloví (nové $nazev1 $nazev2 $nazev3) na novém řádku, tak se objevil posuvník. pcmanik: Ano, ale když jsem použila Tvou verzi, tak se to objevuje sice bez posuvníku, ale odděluje to dvousloví, které obsahuje samotná proměnná. Správně by měl vypsat na jednom řádku -> zima ($nazev1) sport ($nazev2) ledni hokej ($nazev3), ale jelikož jde o konec (kraj) stránky, tak dojde k jeho zalomení a vypíše na prvním řádku -> zima ($nazev1) sport ($nazev2) ledni <- a slovo hokej (které je součástí $nazev3), tak vypíše na řádku druhém. A proměnná $nazev3 obsahuje "ledni hokej". |
||
pcmanik Profil |
Lucyk:
Môžeš prosím napísať príklad s tromi slovnými spojeniami ako sa to má zalamovať? Nie som si na 100% istý čo vlastne chceš. Ale ak to správne chápem podľa posledného tvojho príspevku tak chceš aby celé spojenie "ledni hokej" bolo už na druhom riadku áno? V tom prípade to uprav takto: Deklarácia CSS samozrejme patrí do CSS súboru. span { display: inline-block; } echo '<a href="stranka.php?'. rawurlencode($nazev1) .'&'. rawurlencode($nazev2) .'&'. rawurlencode($nazev3) .'"><span>'. $nazev1 .'</span><span>'. $nazev2 .'</span><span>'. $nazev3 .'</span></a>'; |
||
Lucyk Profil |
#9 · Zasláno: 27. 11. 2016, 11:38:22
pcmanik:
Udělala jsem přes malování názorný příklad, jde mi o zobrazení všech 3 proměnných na jednom řádku, pokud se narazí na konec stránky tak, aby nedošlo k jejich rozdělení ať už proměnná 1 a proměnná 2 na jednom řádku a proměnná 3 na řádku druhém, anebo proměnná 1, proměnná 2 a část proměnné 3 na jednom řádku a zbytek proměnné 3 na řádku druhém. ![]() |
||
Keeehi Profil |
echo '<a href="stranka.php?'.rawurlencode($nazev1).'&'.rawurlencode($nazev2).'&'.rawurlencode($nazev3).'">'.preg_replace('~\s+~', ' ', $nazev1).' '.preg_replace('~\s+~', ' ', $nazev2).' '.preg_replace('~\s+~', ' ', $nazev3).'</a>'; |
||
Lucyk Profil |
#11 · Zasláno: 30. 11. 2016, 04:18:26
Keeehi:
Děkuji, tento kód už plní účel, kterého jsem se snažila dosáhnout. Ještě jsem narazila na jeden zádrhel. Pokud mám v proměnné číselné záznamy typu: 2001-02, 2002-03, tak mi to nyní pokud se narazí na konec stránky rozdělí 2001-(první řádek) 02 (řádek druhý). Přestože mezi číslem a pomlčkou není mezera. Existuje i na tohle nějaký trik, jak to ošetřit, aby to zůstalo spojené? |
||
Tomášeek Profil |
#12 · Zasláno: 30. 11. 2016, 07:00:53
Lucyk:
Předpokládám, že tě nenapadlo nejprve hledat, že? Pojem nedělitelná mezera znáš, první, co tě mělo napadnout, je nedělitelná pomlčka - Interpunkce na webu |
||
Lucyk Profil |
Tomášeek:
Hledala jsem a zkoušela jsem použít do této části kódu ('~\s+~', ' ', $nazev2), aby pomlčka byla nahrazena nedělitelnou mezerou. Podařilo se mi dosáhnout toho, že mi pomlčka zmizela a je tam mezera. ('~[\-\s+]~', ' ', $nazev2) |
||
Keeehi Profil |
#14 · Zasláno: 1. 12. 2016, 20:28:42
('~-~', '‑', $nazev2) |
||
Lucyk Profil |
#15 · Zasláno: 2. 12. 2016, 04:21:31
Keeehi:
Tak jsem to zatím vyřešila následujícím kódem. ('~[\-]~', '‑', $nazev2) Jelikož se jedná pouze o jednu proměnnou, kde vím, že nebude mezera, ale pomlčka, tak jsem dala nahradit pomlčku nedělitelnou pomlčkou. Btw. jaký je rozdíl mezi '~[\-]~' a ~-~ . Ale ráda bych to měla i ošetřené pro situace, kdy bych měla např. v proměnné následující řetězec "2003-05 Auto". Zde už musí být provedeno dvojí nahrazení. Pomlčka -> nedělitelná pomlčka a Mezera -> nedělitelná mezera. Zkoušela jsem se dívat na internetu, zda nenajdu nějaký příklad použití pro vícenásobné použití preg_replace. Našla jsem něco takového, ale nevím, zda je to správně zapsáno: preg_replace('/\s+/', ' ', preg_replace('~[\-]~', '‑', $nazev2)) Tento zápis chápu tak, že v proměnné by se nahradily mezery -> nedělitelnou mezerou a následně by pomlčky nahradily pevnou pomlčkou. Nebo se zápis pro takovéto případy dělá jiným způsobem? |
||
Keeehi Profil |
Lucyk:
„Tento zápis chápu tak, že v proměnné by se nahradily mezery -> nedělitelnou mezerou a následně by pomlčky nahradily pevnou pomlčkou.“ Pořadí je naopak, ale jinak je to správně. Vyhodnocuje se to zevnitř ven. „Btw. jaký je rozdíl mezi '~[\-]~' a ~-~ .“ V tomto případě naprosto žádný. To zpětné lomítko tam je zbytečné. A ty hranaté závorky označují skupinu z které se "vybírá" jeden prvek. Když ta skupina má jeden prvek tak je jasné že je nutné použít zrovna ten. |
||
Časová prodleva: 7 let
|
0