Hay diversas formas de hacer lo que tú dices. Para mí la más sencilla que se me ocurre es usar un combinación entre las funciones file() y explode(). Esto será buena idea mientras el archivo no sea demasiado grande, puesto que file() carga cada línea del fichero en una posición de un array.
Teniendo en cuenta lo anterior te puedes montar una función como ésta:
Código PHP:
function obtener_campo($Fila, $Columna) {
static $lineas;
if (!isset($lineas))
$lineas=file("NombreArchivo.txt");
$campos=explode("|^|", $lineas[$Fila]);
return $campos[$Columna];
}
Esto devuelve un campo del fichero dada una fila. En tu ejemplo llamando a obtener_campo(2,3) se obtiene Chile. Para obtener toda la fila te podría servir esto:
Código PHP:
$id = obtener_campo(2,0);
$nombre = obtener_campo(2,1);
$apellido = obtener_campo(2,2);
// ...
Ya te digo que esto sólo será eficiente para archivos no demasiado grandes. Si tu archivo es muy grande (o puede llegar a serlo) entonces tendrás que enfocarlo de otro modo.