Php 如何在下划线再次出现之前删除所有内容

Php 如何在下划线再次出现之前删除所有内容,php,Php,我无法使用搜索找到解决方案 我正在寻找一个php解决方案,删除第二次出现和下划线(包括下划线)之前的所有字符 例如: 这是一项测试 应输出为: a_检验 我目前有此代码,但它将在第一次出现后删除所有内容: preg\u replace('/^[^\u]*.s*/'、'$1'、'这是一个测试'); 注意U修饰符,它告诉正则表达式为*取尽可能少的字符 注意U修饰符,它告诉正则表达式为*取尽可能少的字符。您也可以使用分解,内爆以及数组拼接 $str = "this_is_a_test"; echo

我无法使用搜索找到解决方案

我正在寻找一个php解决方案,删除第二次出现和下划线(包括下划线)之前的所有字符

例如:

这是一项测试

应输出为:

a_检验

我目前有此代码,但它将在第一次出现后删除所有内容:

preg\u replace('/^[^\u]*.s*/'、'$1'、'这是一个测试');
注意
U
修饰符,它告诉正则表达式为
*
取尽可能少的字符


注意
U
修饰符,它告诉正则表达式为
*
取尽可能少的字符。

您也可以使用
分解
内爆
以及
数组拼接

$str = "this_is_a_test";
echo implode('_',array_splice(explode('_',$str),2));//a_test

您还可以使用
分解
内爆
以及
阵列拼接
,如

$str = "this_is_a_test";
echo implode('_',array_splice(explode('_',$str),2));//a_test

为什么要走复杂的路?这是一个使用
strrpos
substr
的建议:

<?php
$str = "this_is_a_test";

$str_pos = strrpos($str, "_");

echo substr($str, $str_pos-1);
?>

为什么要走复杂的路?这是一个使用
strrpos
substr
的建议:

<?php
$str = "this_is_a_test";

$str_pos = strrpos($str, "_");

echo substr($str, $str_pos-1);
?>

试试这个

<?php
    $string = 'this_is_a_test';
    $explode = explode('_', $string, 3);
    echo $explode[2];
?>

试试这个

<?php
    $string = 'this_is_a_test';
    $explode = explode('_', $string, 3);
    echo $explode[2];
?>


使用稍微不同的方法

$s='this_is_a_test';
echo implode('_', array_slice( explode( '_', $s ),2 ) );

/* outputs */
a_test

使用稍微不同的方法

$s='this_is_a_test';
echo implode('_', array_slice( explode( '_', $s ),2 ) );

/* outputs */
a_test

在这种情况下,我仍然支持正则表达式:

preg_replace('/^.*?_.*?_/', '', 'this_is_a_test');
或者(此处看起来更复杂,但很容易调整为N..M下划线):

*?
中使用问号使匹配不贪婪;该模式已从原来的帖子扩展为“通过第二个下划线匹配”

由于目标是删除文本,匹配的部分只需替换为空字符串,因此不需要捕获组或使用替换值等


如果输入不包含两个下划线,则不删除任何内容;如果规则得到进一步澄清,可以很容易地用第二个正则表达式对其进行调整。

在这种情况下,我仍然支持正则表达式:

preg_replace('/^.*?_.*?_/', '', 'this_is_a_test');
或者(此处看起来更复杂,但很容易调整为N..M下划线):

*?
中使用问号使匹配不贪婪;该模式已从原来的帖子扩展为“通过第二个下划线匹配”

由于目标是删除文本,匹配的部分只需替换为空字符串,因此不需要捕获组或使用替换值等


如果输入不包含两个下划线,则不删除任何内容;如果规则得到进一步澄清,则可以使用第二个正则表达式非常轻松地对其进行调整。

这是可行的,您是第一个做出响应的人。非常感谢。这是可行的,你是第一个做出回应的人。非常感谢。这看起来是所有解决方案中最优雅的。非常感谢。这看起来是所有解决方案中最优雅的。非常感谢。谢谢,这似乎是最容易理解的。谢谢,这似乎是最容易理解的