mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 11:06:15 +00:00
parent
a68cb4f9ce
commit
4e7e06fa9f
2 changed files with 62 additions and 11 deletions
|
@ -60,7 +60,7 @@ class TextHelperTest extends CakeTestCase {
|
|||
$text5 = '0<b>1<i>2<span class="myclass">3</span>4<u>5</u>6</i>7</b>8<b>9</b>0';
|
||||
$text6 = '<p><strong>Extra dates have been announced for this year\'s tour.</strong></p><p>Tickets for the new shows in</p>';
|
||||
$text7 = 'El moño está en el lugar correcto. Eso fue lo que dijo la niña, ¿habrá dicho la verdad?';
|
||||
$text8 = 'Vive la R'.chr(195).chr(169).'publique de France';
|
||||
$text8 = 'Vive la R' . chr(195) . chr(169) . 'publique de France';
|
||||
$text9 = 'НОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыь';
|
||||
|
||||
$this->assertSame($this->Text->truncate($text1, 15), 'The quick br...');
|
||||
|
@ -86,6 +86,51 @@ class TextHelperTest extends CakeTestCase {
|
|||
$this->assertSame($this->Text->truncate($text7, 15), 'El moño está...');
|
||||
$this->assertSame($this->Text->truncate($text8, 15), 'Vive la R'.chr(195).chr(169).'pu...');
|
||||
$this->assertSame($this->Text->truncate($text9, 10), 'НОПРСТУ...');
|
||||
|
||||
$text = '<p><span style="font-size: medium;"><a>Iamatestwithnospacesandhtml</a></span></p>';
|
||||
$result = $this->Text->truncate($text, 10, array(
|
||||
'ending' => '...',
|
||||
'exact' => false,
|
||||
'html' => true
|
||||
));
|
||||
$expected = '<p><span style="font-size: medium;"><a>...</a></span></p>';
|
||||
$this->assertEquals($expected, $result);
|
||||
|
||||
$text = '<p><span style="font-size: medium;">El biógrafo de Steve Jobs, Walter
|
||||
Isaacson, explica porqué Jobs le pidió que le hiciera su biografía en
|
||||
este artículo de El País.</span></p>
|
||||
<p><span style="font-size: medium;"><span style="font-size:
|
||||
large;">Por qué Steve era distinto.</span></span></p>
|
||||
<p><span style="font-size: medium;"><a href="http://www.elpais.com/
|
||||
articulo/primer/plano/Steve/era/distinto/elpepueconeg/
|
||||
20111009elpneglse_4/Tes">http://www.elpais.com/articulo/primer/plano/
|
||||
Steve/era/distinto/elpepueconeg/20111009elpneglse_4/Tes</a></span></p>
|
||||
<p><span style="font-size: medium;">Ya se ha publicado la biografía de
|
||||
Steve Jobs escrita por Walter Isaacson "<strong>Steve Jobs by Walter
|
||||
Isaacson</strong>", aquí os dejamos la dirección de amazon donde
|
||||
podeís adquirirla.</span></p>
|
||||
<p><span style="font-size: medium;"><a>http://www.amazon.com/Steve-
|
||||
Jobs-Walter-Isaacson/dp/1451648537</a></span></p>';
|
||||
$result = $this->Text->truncate($text, 500, array(
|
||||
'ending' => '... ',
|
||||
'exact' => false,
|
||||
'html' => true
|
||||
));
|
||||
$expected = '<p><span style="font-size: medium;">El biógrafo de Steve Jobs, Walter
|
||||
Isaacson, explica porqué Jobs le pidió que le hiciera su biografía en
|
||||
este artículo de El País.</span></p>
|
||||
<p><span style="font-size: medium;"><span style="font-size:
|
||||
large;">Por qué Steve era distinto.</span></span></p>
|
||||
<p><span style="font-size: medium;"><a href="http://www.elpais.com/
|
||||
articulo/primer/plano/Steve/era/distinto/elpepueconeg/
|
||||
20111009elpneglse_4/Tes">http://www.elpais.com/articulo/primer/plano/
|
||||
Steve/era/distinto/elpepueconeg/20111009elpneglse_4/Tes</a></span></p>
|
||||
<p><span style="font-size: medium;">Ya se ha publicado la biografía de
|
||||
Steve Jobs escrita por Walter Isaacson "<strong>Steve Jobs by Walter
|
||||
Isaacson</strong>", aquí os dejamos la dirección de amazon donde
|
||||
podeís adquirirla.</span></p>
|
||||
<p><span style="font-size: medium;"><a>... </p></span></a>';
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -275,8 +275,15 @@ class TextHelper extends AppHelper {
|
|||
}
|
||||
if (!$exact) {
|
||||
$spacepos = mb_strrpos($truncate, ' ');
|
||||
if (isset($spacepos)) {
|
||||
if ($html) {
|
||||
$truncateCheck = mb_substr($truncate, 0, $spacepos);
|
||||
$lastOpenTag = mb_strrpos($truncateCheck, '<');
|
||||
$lastCloseTag = mb_strrpos($truncateCheck, '>');
|
||||
if ($lastOpenTag > $lastCloseTag) {
|
||||
preg_match_all('/<[\w]+[^>]*>/s', $truncate, $lastTagMatches);
|
||||
$lastTag = array_pop($lastTagMatches[0]);
|
||||
$spacepos = mb_strrpos($truncate, $lastTag) + mb_strlen($lastTag);
|
||||
}
|
||||
$bits = mb_substr($truncate, $spacepos);
|
||||
preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
|
||||
if (!empty($droppedTags)) {
|
||||
|
@ -289,7 +296,6 @@ class TextHelper extends AppHelper {
|
|||
}
|
||||
$truncate = mb_substr($truncate, 0, $spacepos);
|
||||
}
|
||||
}
|
||||
$truncate .= $ending;
|
||||
|
||||
if ($html) {
|
||||
|
|
Loading…
Add table
Reference in a new issue