PHP - Limitar la Cantidad de Texto a Mostrar

   
Vista:

Limitar la Cantidad de Texto a Mostrar

Publicado por leoncito (7 intervenciones) el 02/07/2016 17:42:54
hola... quisiera limitar la cantidad de texto a mostrar .. no se php por eso pido ayuda... agregue un ubstr($string, 0, 150); (linea 44) .. la linea 43 es la que me muestra el intro texto que quiero limitar.. espero alguno pueda darme una mano.. quisiera limitarlo a unos 150 caracteres ... o ir probando hasta ajustar y que no me exceda a lo que necesito... saludos...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
/**
 
 */
 
defined('_JEXEC') or die;?>
<?php
// Create a shortcut for params.
$params = $this->item->params;
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
$canEdit = $this->item->params->get('access-edit');
 
?>
<?php if ($this->item->state == 0) : ?>
    <span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>
 
    <?php //intro images ?>
    <?php echo JLayoutHelper::render('content.intro_image', $this->item); ?>
 
    <div class="article-text">
        <?php echo JLayoutHelper::render('content.blog_style_default_item_title', $this->item); ?>
        <?php echo JLayoutHelper::render('content.icons', array('params' => $params, 'item' => $this->item, 'print' => false)); ?>
 
        <aside class="article-aside">
            <?php // Todo Not that elegant would be nice to group the params ?>
            <?php $useDefList = ($params->get('show_modify_date') || $params->get('show_publish_date') || $params->get('show_create_date')
                || $params->get('show_hits') || $params->get('show_category') || $params->get('show_parent_category') || $params->get('show_author') ); ?>
 
            <?php if ($useDefList) : ?>
                <?php echo JLayoutHelper::render('content.info_block.block', array('item' => $this->item, 'params' => $params, 'position' => 'above')); ?>
            <?php endif; ?>
        </aside>
 
    <?php if (!$params->get('show_intro')) : ?>
            <?php echo $this->item->event->afterDisplayTitle; ?>
    <?php endif; ?>
 
    <?php echo $this->item->event->beforeDisplayContent; ?>
 
    <?php if ($params->get('show_intro')) : ?>
        <div class="article-intro">
            <?php echo $this->item->introtext; ?>
            <?php echo substr($string, 0, 100);?>
        </div>
    <?php endif; ?>
 
 
 
    <?php if ($params->get('show_readmore') && $this->item->readmore) :
        if ($params->get('access-view')) :
            $link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid));
        else :
            $menu = JFactory::getApplication()->getMenu();
            $active = $menu->getActive();
            $itemId = $active->id;
            $link1 = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId);
            $returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid));
            $link = new JURI($link1);
            $link->setVar('return', base64_encode($returnURL));
        endif; ?>
 
        <a class="button" href="<?php echo $link; ?>">
 
        <?php if (!$params->get('access-view')) :
            echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
        elseif ($readmore = $this->item->alternative_readmore) :
            echo $readmore;
            if ($params->get('show_readmore_title', 0) != 0) :
            echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
            endif;
        elseif ($params->get('show_readmore_title', 0) == 0) :
            echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
        else :
            echo JText::_('COM_CONTENT_READ_MORE');
            echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
        endif; ?>
 
 
        </a>
 
    <?php endif; ?>
 
 
    </div>
 
<?php if ($this->item->state == 0) : ?>
</div>
<?php endif; ?>
 
<?php echo $this->item->event->afterDisplayContent; ?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Limitar la Cantidad de Texto a Mostrar

Publicado por kip (572 intervenciones) el 02/07/2016 17:59:19
Hola, prueba haciendo e substr en el texto que mostraras, almacenandolo antes primero en una variable,algo asi:

1
2
<?php $string =  $this->item->introtext; ?>//almaceno
<?php echo substr($string, 0, 150);?>//muestro

Prueba y nos cuentas si es lo que necesitas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Limitar la Cantidad de Texto a Mostrar

Publicado por leoncito (7 intervenciones) el 02/07/2016 18:41:35
primero que nada... gracias por responder kip.. anda perfecto... lo unico malo es que me corta mal el texto... te doy un ejemplo, la frase me termina asi "mascotas perdid" .. y yo quiero que termine "mascotas perdidas" .. que termine la palabra .. me terminan faltando caracteres al final .. googleando encontre algo pero no se como adaptarlo a lo que tengo... talvez me podrias ayudar al respecto.. adjunto lo que encontre..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
    function cortar_string ($string, $largo) {
       $marca = "<!--corte-->
 
       if (strlen($string) > $largo) {
 
           $string = wordwrap($string, $largo, $marca);
           $string = explode($marca, $string);
           $string = $string[0];
       }
       return $string;
 
    }
 
    $string = "Ejemplo de como cortar un string sin considerar una palabra incompleta.";
    $largo = 43;
 
    echo cortar_string ($string, $largo)." ...";
    //Ejemplo de como cortar un string sin ... 
 
    //Este ejemplo es para evitar lo siguiente.. 
    echo substr ($string, 0, $largo);
    //Ejemplo de como cortar un string sin consid 
    ?>

o

1
2
3
for ($i=60; $i>0; $i--)
      if ($titulo[$i]==' ') break;
    echo substr($titulo,0,$i);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Limitar la Cantidad de Texto a Mostrar

Publicado por kip (572 intervenciones) el 02/07/2016 20:05:06
Hola, he hecho algo a ver si se ajusta a lo que quieres, aqui lo dejo:

1
2
3
4
5
6
<?php
$string = "Ejemplo de como cortar un string sin considerar una palabra incompleta.";
$array_str = explode(' ',$string);//transformo el string a  un array
$palabras_necesitas=6;//coloco el num de palabras que necesito del string
$string_final = implode(' ', array_slice($array_str,0,$palabras_necesitas));//aqui hago la operacion para obtener solo las palabras que necesito del array string y lo convierto a un string neuvamente
echo $string_final; // muestro el string final con las palabras que solo necesitaba

Nos cuentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Limitar la Cantidad de Texto a Mostrar

Publicado por leoncito (7 intervenciones) el 02/07/2016 21:22:17
agregue ese codigo .... y me repite el texto que pusiste de ejemplo en todos los introtext .. "Ejemplo de como cortar un string sin considerar una palabra incompleta".. en lugar de mostrar los texto que son todos diferentes porque son de articulos diferente.. me repite en todo el texto de ejemplo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Limitar la Cantidad de Texto a Mostrar

Publicado por kip (572 intervenciones) el 02/07/2016 21:47:13
Hazlo asi:

1
2
3
4
5
6
<?php $string =  $this->item->introtext; ?>//almaceno
<?php $array_str = explode(' ',$string);//transformo el string a  un array
$palabras_necesitas=10;//coloco el num de palabras que necesito del string
$string_final = implode(' ', array_slice($array_str,0,$palabras_necesitas));//aqui hago la operacion para obtener solo las palabras que necesito del array string y lo convierto a un string neuvamente
echo $string_final; // muestro el string final con las palabras que solo necesitaba
?>//muestro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Limitar la Cantidad de Texto a Mostrar

Publicado por leoncito (7 intervenciones) el 02/07/2016 22:19:01
perfecto... sos un master.. muchisimas gracias.. gracias por ayudar a los que no sabemos... saludos.. y gracias de vuelta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar