Foros del Web » Programando para Internet » PHP »

Division de cadena Caracter por caracter.

Estas en el tema de Division de cadena Caracter por caracter. en el foro de PHP en Foros del Web. Tengo un script que divide Frases, o cadenas en palabras cada vez que aparece un espacio: Código PHP: <?PHP $cadena  =  "Esta es una cadena de ejemplo" ; $tok  =  ...
  #1 (permalink)  
Antiguo 17/10/2003, 12:44
Usuario baneado!
 
Fecha de Ingreso: diciembre-2002
Ubicación: En mi chozita
Mensajes: 142
Antigüedad: 21 años, 11 meses
Puntos: 0
Información Division de cadena Caracter por caracter.

Tengo un script que divide Frases, o cadenas en palabras cada vez que aparece un espacio:

Código PHP:
<?PHP
$cadena 
"Esta es una cadena de ejemplo";
$tok strtok ($cadena," ");
while (
$tok) {
    echo 
"Palabra=$tok<br>";
    
$tok strtok (" ");
}
?>

Pero cuando quiero que el parametro no sea un espacio, sino por ejemplo un caracter como: "a", entonces el script da error, y BORRA el caracter.

Lo que hago es esto:

Código PHP:
<?PHP
$cadena 
"Esta es una cadena de ejemplo";
$tok strtok ($cadena,"a");
while (
$tok) {
    echo 
"Palabra=$tok<br>";
    
$tok strtok ("a");
}
?>

Por favor, donde esta el error?, o cómo puedo hacer que el parametro sea: "a" y no salgan errores?.

Pero mi pregunta más importante es:

Como hago para que PHP me divida una cadena en cada 1 de los caracteres?, es decir si tengo la cadena: "Esta es una cadena de ejemplo"; como convertir eso en:

E
s
t
a

e
s

u
n
a

c
a
d
e
n
a

d
e

e
j
e
m
p
l
o

Muchas gracias.
  #2 (permalink)  
Antiguo 17/10/2003, 13:02
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años, 7 meses
Puntos: 1
Yo la verdad no le veo error, por cierto lo he probado en mi local y va bien, prueba con
Código PHP:
$tok=explode ("a"$cadena); te devuelve un array tb 
en cuanto a la segunda pregunta pues , me parece que lo podrias hacer con la funcion srtlen(), te devuelve la cantidad de caractres de una cadena y luego sabiendo que la $cadena[] es el array de todos los caracters pues haciendo un for
por ejem:
Código PHP:
<?PHP
$cadena 
"Esta es una cadena de ejemplo";

$num=strlen($cadena);

for (
$i=$i<=$num-$i++){
    echo 
"<li>".$cadena[$i];
    
}
?>
espero que te sirva
  #3 (permalink)  
Antiguo 17/10/2003, 13:59
Usuario baneado!
 
Fecha de Ingreso: diciembre-2002
Ubicación: En mi chozita
Mensajes: 142
Antigüedad: 21 años, 11 meses
Puntos: 0
Mensaje Pero... Y si la cadena son numeros?

Muchas gracias, pero aun se ha resuelto el asunto.

Digamos que tengo la cadena: "123456"; y quiero hacer que se presente asi:

1
2
3
4
5
6

... Parece que es un lio, utilizando for, asi que cómo puede hacerse ese "artiliugio"?

Que otra funcion puede utilizarse?, o como se hace eso con numeros?

Código PHP:
<?PHP

$datos 
"123456";
$num strlen($datos);
echo 
$num;
for (
$i=$i<=$num-$i++){
    echo 
"<BR>".$count[$i];

}
?>
  #4 (permalink)  
Antiguo 17/10/2003, 14:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Para acceder a los caracteres de una cadena es mejor usar {} en lugar de [], $cadena{3}.

Y en tu ultimo codigo, si te fijas te has equivocado de variable de cadena, pones $count cuando es $datos. Y si te molestas en probarlo veras que funciona.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 17/10/2003, 16:41
Usuario baneado!
 
Fecha de Ingreso: diciembre-2002
Ubicación: En mi chozita
Mensajes: 142
Antigüedad: 21 años, 11 meses
Puntos: 0
Disculpenme muchachos...

Ok; pido discupas por errar tan HORROROSAMENTE en la variable, al punto de parecer un peresozo.

Repito: Disculpame, he hecho que pierdas una fraccion de tiempo en algo que no tenia por que serlo.

Debido a mi poquisimo manejo de php, y todo lo que es programación, yo intentaba que la variable $count = 123456; pudiera ser utilizada de la manera mencionada, mi errorsote estava en que para poder hacer el strlen, hay que hacer primero asi:

$count = "$count";

Y ahi la variable $count SI ES UNA CADENA, antes de eso es... No se que es, pero no se deja hacer strlen.

Gracias por su excesiva pasciencia Josemi, sin duda los bobitos extremos te lo agradecemos muchisisimo.

La cosa completa es:

Código PHP:
<?PHP
    $count 
123456;

echo 
"Origen: $count <BR><BR><BR>";

// Para que el script no de error hay que hacer asi:
// $count = "$count"; o desde un principio:
// $count = "123456"; error de principiante, disculpa Josemi

$num strlen($count);
for (
$i=$i<=$num-$i++){
    echo 
"<BR>".$count[$i];
}
?>
... ( si me permites, ya que meti la pata, aprovecho para preguntar esto que hace días he querido saber:

Iniciar: <? es igual que iniciar: <?php.
Hay un criterio para elejir una de esas 2 ?.

Tengo entendido que la cosa es configurar apache para que PHP si funcione abriendo el script solo con <?
Pero... Por que alguien no habria de configurar apache de esa forma?.

En sintesis: ¿Es errado que to2 mis scripts los inicie solo con <? ?.

Buena suerte y sigue siendo asi de bondadoso.

Última edición por RAZACALA; 17/10/2003 a las 16:43
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:05.