Autor | Zpráva | ||
---|---|---|---|
eliška Profil * |
#1 · Zasláno: 10. 2. 2017, 07:36:13
Ahoj mám takovouto funkci, na zkracování textu. Když chci zkrátit text, tak mi to počítá i znaky html kódu (strong, a href atd.), tak jak je mám uloženy v databázi.
Např. <strong><a href="[rooturl]/recepty?f=razeni:2-druh:11" title="recepty do kuchyne" class="a_acronym">Rychlá jídla</a></strong> další text... Funkce spočte zřejmě všechny znaky včetně <> a jejich obsahu a já bych potřebovala aby to počítalo jenom ten text Rychlá jídla + další text atd., protože jinak když dám omezení třeba na 250 znaků, tak pak vidím jenom dvě slova (zbytek je html a to se nezobrazuje ale započítává do funkce) function substr_unicode($str, $s, $l = null) { return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l)); } function zkratit($retezec, $znaku) { if(strlen($retezec)>$znaku){ $retezec=substr_unicode($retezec, 0, $znaku-2).".."; } return $retezec; Děkuji moc za radu a pomoc |
||
Alphard Profil |
#2 · Zasláno: 10. 2. 2017, 08:30:59
Ty značky by se měly i ukončit, ne to jen useknout, viz Moved Permanently.
|
||
eliška Profil * |
#3 · Zasláno: 10. 2. 2017, 09:05:31
Promiňte nerozumím, tuto funkci mi dělal kamarád. Co myslíte useknutím? Já myslela přidat podmínku aby to co je mezi <> se nepočítalo do té délky řetězce. To je špatná myšlenka?
|
||
Chro. Profil |
#4 · Zasláno: 10. 2. 2017, 11:05:43
Text lze před zpracováním ostatními funkcemi zbavit html značek funkcí strip_tags(), stačí ji vhodně zakomponovat do kódu.
function zkratit($retezec, $znaku) { $retezec = strip_tags($retezec); |
||
Tomášeek Profil |
#5 · Zasláno: 10. 2. 2017, 11:30:27
Chro.:
Hm... a jak pak do výstupu zpětně naroubuješ původní HTML? Pokud tedy neberu, že HTML formát je jen značka odstavce na začátku a na konci, ale nějaká komplexnější struktura. |
||
Chro. Profil |
#6 · Zasláno: 10. 2. 2017, 11:47:41
V kódu [#1] je "..", soudím, že slečna/paní potřebuje upravit html článku z DB na prostý text (a ten ořezat), který se pak na stránce zobrazí jako perex.
|
||
eliška Profil * |
#7 · Zasláno: 10. 2. 2017, 13:08:41
Jde mi o to aby se mi na stránce text zobrazil v délce např. 250 znaků ale aby v něm byli odkazy a zvýraznění, která tam sice teď jsou ale text se nezobrazí v té délce 250 znaků, protože to bere v potaz to html<>
|
||
Tomášeek Profil |
#8 · Zasláno: 10. 2. 2017, 13:11:13
Chro.:
Myslím, že soudíš špatně. Navíc, i v perexu může být ponechané (nějaké) formátování, typicky odřádkování, seznam, nebo kurzíva/bold. |
||
eliška Profil * |
Chro. [#4]: Toto mi právě odstraní Html jako takové a pak se mi nevypisuji odkazy a zvýraznění. Což ale nechci, já potřebuji aby to bylo s těmi odkazy, ale celých 250 znaků
Nešla by funkce, která by počítala znaky, ale ty co jsou v <ohraničeni html> by nebrala v potaz? To by to mohlo vyřešit ne? |
||
TomášK. Profil * |
#10 · Zasláno: 10. 2. 2017, 13:47:07
eliška:
Problém je v tom, že nemůžeš text jen tak useknout po 250 znacích textu. Přiklad: <strong>Nějaký text</strong> s <a href='#'>odkazem</a>, který je potřeba zkrátit. <strong>Nějaký text</strong> s <a href='#'>odkaz… <strong>Nějaký text</strong> s <a href='#'>odkaz…</a> Idea počítat jen znaky textu je dobrá, ale pokud text obsahuje HTML, potřebuješ složitější funkci než tu, kterou máš - takovou, která dokáže pracovat i s tím HTML. Viz Truncate text containing HTML, ignoring tags |
||
eliška Profil * |
#11 · Zasláno: 10. 2. 2017, 14:38:21
Tak to asi nedám...Ale asi toto přesně potřebuji.
|
||
Monkeys Profil * |
#12 · Zasláno: 10. 2. 2017, 16:34:29
A co tak pouzit css text-overflow elipsis, miesto vymyslat s php.
M. |
||
Keeehi Profil |
#13 · Zasláno: 11. 2. 2017, 09:31:56
eliška:
„Tak to asi nedám...Ale asi toto přesně potřebuji.“ Ale v tom odkazu máš i řešení. Tak ho stačí jen zkopírovat. Vo na tom nedáš? |
||
Časová prodleva: 8 let
|
0