una recorrer length extraer escapar comillas caracteres cadena array php string

php - recorrer - Obtener personajes después del último/en url



string to array php (8)

Aquí hay una hermosa función dinámica que escribí para eliminar la última parte de la url o ruta.

/** * remove the last directories * * @param $path the path * @param $level number of directories to remove * * @return string */ private function removeLastDir($path, $level) { if(is_int($level) && $level > 0){ $path = preg_replace(''#//[^/]*$#'', '''', $path); return $this->removeLastDir($path, (int) $level - 1); } return $path; }

Quiero obtener los personajes después de la última / en una url como http://www.vimeo.com/1234567

¿Cómo hago con php?


Dos líneas: sospecho que la primera es más rápida pero la segunda es más bonita y, a diferencia de end() y array_pop() , puede pasar el resultado de una función directamente a current() sin generar ningún aviso o advertencia, ya que no lo hace mover el puntero o alterar la matriz.

$var = ''http://www.vimeo.com/1234567''; // VERSION 1 - one liner simmilar to DisgruntledGoat''s answer above echo substr($a,(strrpos($var,''/'') !== false ? strrpos($var,''/'') + 1 : 0)); // VERSION 2 - explode, reverse the array, get the first index. echo current(array_reverse(explode(''/'',$var)));


Muy simple:

$id = substr($url, strrpos($url, ''/'') + 1);

strrpos obtiene la posición de la última aparición de la barra inclinada; substr devuelve todo después de esa posición.

Como se menciona en redanimalwar, si no hay barras, esto no funciona correctamente ya que strrpos devuelve false. Aquí hay una versión más robusta:

$pos = strrpos($url, ''/''); $id = $pos === false ? $url : substr($url, $pos + 1);


Puede explode según "/" y devolver la última entrada:

print end( explode( "/", "http://www.vimeo.com/1234567" ) );

Esto se basa en volar la cuerda, algo que no es necesario si sabes que el patrón de la cuerda en sí no cambiará pronto. Alternativamente, podría usar una expresión regular para ubicar ese valor al final de la cadena:

$url = "http://www.vimeo.com/1234567"; if ( preg_match( "//d+$/", $url, $matches ) ) { print $matches[0]; }


Puede usar substr y strrchr :

$url = ''http://www.vimeo.com/1234567''; $str = substr(strrchr($url, ''/''), 1); echo $str; // Output: 1234567


array_pop(explode("/", "http://vimeo.com/1234567")); devolverá el último elemento de la url de ejemplo


$str = "http://www.vimeo.com/1234567"; $s = explode("/",$str); print end($s);


$str = basename($url);