parte - strpos php
Captura el texto restante despuĂ©s del Ășltimo "/" en una cadena de php (8)
Hay muchas maneras de hacer esto. Probablemente usaría:
array_pop(explode(''/'', $string));
Entonces, digamos que tengo $somestring
que tiene el valor "main / physician / physician_view".
Quiero agarrar solo "doctor_vista". Quiero que también funcione si la cadena pasada fue "main / physician_view" o "site / main / physician / physician_view".
Espero que mi pregunta tenga sentido. ¡Cualquier ayuda sería apreciada!
Las otras soluciones no siempre funcionan o son ineficientes. Aquí hay una función de utilidad general más útil que siempre funciona y puede usarse con otros términos de búsqueda.
/**
* Get a substring starting from the last occurrence of a character/string
*
* @param string $str The subject string
* @param string $last Search the subject for this string, and start the substring after the last occurrence of it.
* @return string A substring from the last occurrence of $startAfter, to the end of the subject string. If $startAfter is not present in the subject, the subject is returned whole.
*/
function substrAfter($str, $last) {
$startPos = strrpos($str, $last);
if ($startPos !== false) {
$startPos++;
return ($startPos < strlen($str)) ? substr($str, $startPos) : '''';
}
return $str;
}
// Examples
substrAfter(''main/physician/physician_view'', ''/''); // ''physician_view''
substrAfter(''main/physician/physician_view/'', ''/''); // '''' (empty string)
substrAfter(''main_physician_physician_view'', ''/''); // ''main_physician_physician_view''
Para otro trazador de líneas, puede utilizar el truco de explosión e invertir la matriz:
current(array_reverse(explode(''/'',$url)));
Puede usar strrpos()
para encontrar la última ocurrencia de una cadena en otra:
substr($somestring, strrpos($somestring, ''/'') + 1)
Quizás después...
La forma más fácil incorporada en PHP para tomar la última cadena después del último /
podría ser simplemente usando la función pathinfo
.
De hecho, puedes comprobar esto por ti mismo,
$urlString = ''path/to/my/xximage.png'';
$info = pathinfo($urlString);
Podrías hacerlo:
var_dump($info);
esto te dará algo como:
''dirname'' => string ''path/to/my/''
''basename'' => string ''xximage.png''
''extension'' => string ''png'' (length=3)
''filename'' => string ''xximage''
entonces, para extraer las imágenes de ese enlace, podrías hacer:
$img=$info[''basename''];
$extension=$info[''extension''];
///etc...
echo $img.".".$extension; //xximage.png
Algo pequeño, pero puede hacerte Grow_Gray_Hair_Prematurely
Simplemente puedes usar:
$id = substr( $url, strrpos( $url, ''/'' )+1 );
Use el basename
, que fue creado para este propósito exacto.
$last_part = substr(strrchr($somestring, "/"), 1);
Ejemplos:
php > $a = "main/physician/physician_view";
php > $b = "main/physician_view";
php > $c = "site/main/physician/physician_view";
php > echo substr(strrchr($a, "/"), 1);
physician_view
php > echo substr(strrchr($b, "/"), 1);
physician_view
php > echo substr(strrchr($c, "/"), 1);
physician_view