Zadejte hledaný výraz...

funkce na orez textu s html

Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
21. 5. 2011 10:40:17
Ahoj, nevíte o hotovém řešení funkce, která dokáže ořezat text i když obsahuje html? Mám funkci, která funguje perfektně a ořezává po slově, ale narazil jsem na problém, že bych potřeboval vkládat i obrázky a stane se mi, že mi to ořízne např. na
21. 5. 2011 10:40:17
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638499
hm
verified
rating uzivatele
(20 hodnocení)
21. 5. 2011 10:46:22
pokud orezavas text predpokladam ze ve vysledku html nechces... tak co zkusit strip_tags jeste pred orezavanim?
21. 5. 2011 10:46:22
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638498
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
21. 5. 2011 16:07:01
právě že chci v textu mít i html
21. 5. 2011 16:07:01
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638497
Doporučují číst blog Jakuba Vrány:
http://php.vrana.cz/zkraceni-textu-s-xhtml-znackami.php
31. 5. 2011 22:55:50
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638496
čtu, ale tohle jsem neviděl, díky :-)
1. 6. 2011 09:12:22
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638495
hm
verified
rating uzivatele
(20 hodnocení)
1. 6. 2011 11:14:07
jo reseni ktere dela vrana me taky napadlo, ale vazne se mi nechtelo psat zvlast kdyz to nepouzivam :))
1. 6. 2011 11:14:07
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638494
Pokud chcete zachovat jen , tedy nepárový prvek, napadl mě tento postup:
Logika
Implementace
class Img_Text_Shortener {
private $originalString;
private $shortenedString;
private $capturedImgs;
private $limit;
private $limitWithImgs;
public function __construct($string) {
$this->originalString = $string;
}
public function shorten($limit) {
$this->limit = $limit;
$this->limitWithImgs = $limit;
$this->stripAllButImgs()
->captureImgs()
->stripAll()
->shortenPlainText()
->returnImgsInPlace();
return $this->shortenedString;
}
private function stripAllButImgs() {
$this->shortenedString = strip_tags($this->originalString, '');
return $this;
}
private function captureImgs() {
preg_match_all('@()@iU', $this->shortenedString, $captures, PREG_OFFSET_CAPTURE);
$this->capturedImgs = $captures;
return $this;
}
private function stripAll() {
$this->shortenedString = strip_tags($this->shortenedString);
return $this;
}
private function shortenPlainText() {
$this->shortenedString = mb_substr($this->shortenedString, 0, $this->limit, 'UTF-8');
return $this;
}
private function returnImgsInPlace() {
foreach($this->capturedImgs AS $capture) {
$imgPosition = $capture;
if($this->outOfBounds($imgPosition)) {
break;
}
$imgString = $capture;
$imgLength = mb_strlen($imgString);
$this->limitWithImgs += $imgLength;
$this->shortenedString = $this->insertString($imgString, $this->shortenedString, $imgPosition);
}
return $this;
}
private function outOfBounds($position) {
return $this->limitWithImgs < $position;
}
private function insertString($insertedString, $targetString, $position) {
return mb_substr($targetString, 0, $position) . $insertedString . mb_substr($targetString, $position);
}
}
$string = '

HTML Ipsum Presents

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis.

';
$shortener = new Img_Text_Shortener($string);
var_dump($string);
var_dump($shortener->shorten(150));
var_dump($shortener->shorten(300));
1. 6. 2011 12:23:08
https://webtrh.cz/diskuse/funkce-na-orez-textu-s-html#reply638493
Pro odpověď se přihlašte.
Přihlásit