entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Función substr_count()

Buenas. ¿Cómo puedo lograr, anulando el strlen y el substr existentes y aplicando un substr_count, que cuando en $texto se usen 3 o más veces la etiqueta [/list] se muestre $leermas?

1voto

Leonardo-Tadei comentado

No me queda claro en tu pregunta que es "anulando el strlen y el substr". Querés decir dejar de usar estas funciones para usar substr_count como te indico acá?

De ser así, las 3 ocurrencias de [/list] que querés detectar, son en el texto completo o en los caracteres que quedan luego de recortarlo?

0voto

Leyes comentado

Exacto @Leonardo-Tadei, es del mismo caso. Quería dejar de usar esas funciones para usar substr_count.
En cuanto a la última pregunta, en el texto completo (que vendría a ser el $texto o $news['body'] originalmente).

1voto

Leonardo-Tadei comentado

Ok. Entonces no podés dejar de usar esas funciones, sino que se agrega substr_count a las que ya estás usando...

y qué problema tenés con contar las apariciones de [/list] con substr_count() ???

0voto

Leyes comentado

Ah, bien entonces. El problema principal que estaría teniendo es que no sabría cómo estructurar el código y cómo quedaría, nunca usé esta función.

0voto

Leyes comentado

¿Alguien sabe como puedo resolver esto? Saludos.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @KevinLeyes,

el algoritmo que no sabés como estructurar es independiente de la función a usar... sería algo así:

$texto = $news['body'];
$leermas='';
if( substr_count($news['body'], "[//list]") >= 3) {
  $texto = substr($news['body'],0,2000);
  $leermas = '<a href="'.$news['href'].'">[Leer más]</a>';
}

Es decir: si la cantidad de veces que aparece [/list] es mayor o igual a 3, recortás el texto a 2000 caracteres y asignás valor a $leermas.

Luego en el código siempre mostrás $texto y $leermas, que estará entero o recortado según corresponda.

Saludos cordiales

0voto

Leyes comentado

Gracias por tu respuesta, lo intenté pero en lugar de recortar el texto se mostró por completo sin usar $leermas, lo que intentaba hacer es que, si la cantidad de veces que aparece [/list] es mayor o igual a 3, el texto se corte en ese tercer [/list] y se muestre el $leermas.

1voto

Leonardo-Tadei comentado

Hola @KevinLeyes ,

siendo que solo podemos saber qué es lo que necesitás leyendo tus preguntas y comentarios, es imposible saber dónde querés que se corte el string si no lo decís.

Yo mantuve los 2000 caracteres basándome en tu código...

Si el texto se mostró completo, es porque tiene menos de 2000 caracteres. Poné un valor más bajo para que se vez cómo recorta.

0voto

Leyes comentado

Casi final se encuentra el foreach.
Y suponiendo que el $texto o $news['body'] no tenga ningún [/list] simplemente no se recortaría ni se mostraría $leermas, sólo se lo ignoraría.

1voto

Leonardo-Tadei comentado

Gracias @KevinLeyes, pero el código es irrelevante.

Lo que no se entiende en tú prgunta es qué es lo que querés hacer exacatamente y qué problema tenés con el código en dónde querés hacerlo.

Estás preguntando sobre cómo cortar un texto a una cantidad dada cuando aparecen 3 ocurrencias en un string. Es esa exactamente tu pregunta?

Te da error el código? Cuál? Muestra un resultado y obtenés otro? Cual resultado esperás? Qué resultado obtrenés?

0voto

Leyes comentado

Estás preguntando sobre cómo cortar un texto a una cantidad dada cuando aparecen 3 ocurrencias en un string. Es esa exactamente tu pregunta?

Así es. Según entiendo, el string sería $texto o $news['body']. No me da ningún error en el código, si no que, obtengo actualmente el resultado de que el código no se corta por más que haya la cantidad que haya de etiquetas repetidas de [/list]. No busco cortarlo por su cantidad de caracteres si no por, justamente, la cantidad de veces (en mi caso, quiero que sean 3) en que aparezca [/list] dentro del string mencionado anteriormente, cuando se cumpla lo de las 3 apariciones, justo ahí se cortaría el texto agregando el $leermas.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta