Php 删除最后一个下划线之前的所有字符串

Php 删除最后一个下划线之前的所有字符串,php,preg-replace,Php,Preg Replace,我试图在下划线破折号后找到姓氏 输出应该是:Guy 这是我目前的代码: $x = "John_Chio_Guy"; $x = preg_replace("/^[^_]*_\s*/", "", $x); echo $x; //output : Chio_Guy 您可以使用strrpos和substr: 结果:Guy您可以使用explode函数这太简单了 <?php $x = "John_Chio_Guy"; //explode the string $explode = explode

我试图在下划线破折号后找到姓氏

输出应该是:Guy

这是我目前的代码:

$x = "John_Chio_Guy";
$x = preg_replace("/^[^_]*_\s*/", "", $x);
echo $x;
//output : Chio_Guy
您可以使用strrpos和substr:


结果:Guy

您可以使用explode函数这太简单了

<?php

$x = "John_Chio_Guy";

//explode the string
$explode = explode('_', $x);

//get the end value
echo end($explode);

?>

那些不是破折号,为什么是正则表达式?explode如何?如果名称实际上不包含一个u;;strrpos将返回false,对于add,它将转换为0,因此您将从位置1获得所有信息-也就是说,您丢失了第一个字母。这是否是一个值得关注的问题,取决于数据是否总是包含一个u。
$x = "John_Chio_Guy";

$pos = strrpos($x, "_");

echo substr($x,$pos+1);
<?php

$x = "John_Chio_Guy";

//explode the string
$explode = explode('_', $x);

//get the end value
echo end($explode);

?>