elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Acceder al parametro array de preg_match_all
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Acceder al parametro array de preg_match_all  (Leído 2,210 veces)
franfis

Desconectado Desconectado

Mensajes: 245



Ver Perfil
Acceder al parametro array de preg_match_all
« en: 23 Marzo 2014, 19:03 pm »

Hola amigos, en el siguiente codigo:
Código
  1. <?php
  2. $nombre=array("primero","esg/ndo","tercero","cu\rto","qui\"n\"to","sexto","septi*o","octavo","noveno");
  3. for($i=0;$i<=8;$i++){
  4. preg_match_all("/.*?([\\/:\*\?\"<>|])/", $nombre[$i] ,$out, PREG_PATTERN_ORDER);
  5. var_dump($out);
  6.  
  7. }
  8. ?>
  9.  
Estoy intentando acceder a los caracteres que / \*?:<>| que son los que windows no acepta como nombre de archivo. El resultado del codigo es;
Código
  1.  0 =>
  2.    array
  3.      empty
  4.  1 =>
  5.    array
  6.      empty
  7.  0 =>
  8.    array
  9.      0 => string 'esg/' (length=4)
  10.  1 =>
  11.    array
  12.      0 => string '/' (length=1)
  13.  0 =>
  14.    array
  15.      empty
  16.  1 =>
  17.    array
  18.      empty
  19.  0 =>
  20.    array
  21.      empty
  22.  1 =>
  23.    array
  24.      empty
  25.  0 =>
  26.    array
  27.      0 => string 'qui"' (length=4)
  28.      1 => string 'n"' (length=2)
  29.  1 =>
  30.    array
  31.      0 => string '"' (length=1)
  32.      1 => string '"' (length=1)
  33.  0 =>
  34.    array
  35.      empty
  36.  1 =>
  37.    array
  38.      empty
  39.  0 =>
  40.    array
  41.      0 => string 'septi*' (length=6)
  42.  1 =>
  43.    array
  44.      0 => string '*' (length=1)
  45.  0 =>
  46.    array
  47.      empty
  48.  1 =>
  49.    array
  50.      empty
  51.  0 =>
  52.    array
  53.      empty
  54.  1 =>
  55.    array
  56.      empty
Como podria acceder a *, /, " dentro del for?

Gracias por cualquier sugerencia.


« Última modificación: 23 Marzo 2014, 19:17 pm por #!drvy » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Acceder al parametro array de preg_match_all
« Respuesta #1 en: 24 Marzo 2014, 21:06 pm »

No entiendo el propósito de esto. Ni el sentido ni nada... podrías explicarte ? ¿A que te refieres con "acceder a" ?

PD: Si solo vas a recorrer un array usa foreach en vez de for.

Saludos



En línea

franfis

Desconectado Desconectado

Mensajes: 245



Ver Perfil
Re: Acceder al parametro array de preg_match_all
« Respuesta #2 en: 24 Marzo 2014, 23:43 pm »

Me refería a como imprimir con echo a los caracteres especificados en el regex por ejemplo al asterisco o a la comilla, como estaba en array de arrays. Pero este código.
Código:
if(preg_match_all("/[\\/:\*\?\"<>|]/", $nombre[$i] ,$out, PREG_PATTERN_ORDER)==true)

for ($z = 0;$z < count($out);$z++){
        for ($x = 0;$x < count($out[$z]);$x++) {
echo $out[$z][$x]."  -------  ".$nombre[$i]."<br>";
        }
}
Creo que soluciona mi pregunta, sin ningún grupo de captura en el regex el array $out es mas simple de manejar.

Esos caracteres son los que dan error cuando intetas asignar como nombre de archivo o carpeta en windows.

Saludos
« Última modificación: 24 Marzo 2014, 23:49 pm por franfis » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Acceder al parametro array de preg_match_all
« Respuesta #3 en: 25 Marzo 2014, 01:52 am »

Me alegro de que lo hayas solucionado.. pero estas cometiendo crímenes contra la humanidad usando el for de ese modo ·_·

Saludos
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Acceder al parametro array de preg_match_all
« Respuesta #4 en: 25 Marzo 2014, 08:38 am »

Me alegro de que lo hayas solucionado.. pero estas cometiendo crímenes contra la humanidad usando el for de ese modo ·_·

Saludos


cierto... que tal si simplificas un poco con foreach...

Código
  1. $nombre = array("primero", "esg/ndo", "tercero", "cu\rto", "qui\"n\"to", "sexto", "septi*o", "octavo", "noveno");
  2. foreach ($nombre as $valor) {
  3.    preg_match_all("/.*?([\\/:\*\?\"<>|])/", $valor, $out, PREG_PATTERN_ORDER);
  4.  
  5.    foreach ($out as $primero) {
  6.        foreach ($primero as $segundo) {
  7.            echo $segundo . "  -------  " . $valor . "<br>";
  8.        }
  9.    }
  10. }
  11.  

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como crear un array de parametro?
Programación Visual Basic
ricardovinzo 1 1,861 Último mensaje 20 Octubre 2008, 06:33 am
por cassiani
[SOLUCIONADO] Pasar array como parámetro.
Java
NetJava 3 22,862 Último mensaje 15 Febrero 2011, 21:55 pm
por Debci
Al pasar un array por parametro a una funciona ¿se pasa una copia?
Programación C/C++
Aikanáro Anário 3 3,208 Último mensaje 27 Septiembre 2012, 13:38 pm
por Don Pollo
Acceder a bits de un array.
Programación C/C++
0xDani 6 2,598 Último mensaje 24 Octubre 2012, 18:24 pm
por 0xDani
[Resuelto] No puedo acceder a parametro de mi peticion $http en mi backend PHP
Desarrollo Web
Razzari 9 3,540 Último mensaje 26 Agosto 2017, 00:59 am
por Razzari
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines