2011-06-14 12 views
8

Mi comando awk funciona como se esperaba y devuelve 2 líneas en el símbolo del sistema.función exec no devuelve todas las filas

Cuando uso la función php "exec", devuelve solo la segunda línea.

echo exec("awk -v RS=\",\" '/some_text/' test1.html"); 

¿Cómo devuelvo todos los resultados del comando de shell con PHP?

Respuesta

17

Si el salida argumento está presente, entonces la matriz especificada se llenará con cada línea de salida del comando. El espacio en blanco posterior, como \ n, no está incluido en esta matriz. Tenga en cuenta que si la matriz ya contiene algunos elementos, exec() se agregará al final de la matriz. Si no desea que la función anexe elementos, llame a unset() en la matriz antes de pasarlo a exec().

http://php.net/manual/en/function.exec.php

$out = array(); 
exec("awk -v RS=\",\" '/some_text/' test1.html", $out); 
foreach($out as $line) { 
    echo $line; 
} 
+0

Esto es perfecto. Gracias. ¿También es posible resaltar esa palabra en la línea echo $? # ¡Espero que no pida demasiado! – shantanuo

+1

O, en lugar del foreach: 'echo implode (" \ n ", $ line);' – Keelan

Cuestiones relacionadas