PHP字符串函数,如何隔离最后一组参数中的内容?

PHP字符串函数,如何隔离最后一组参数中的内容?,php,string,function,Php,String,Function,我必须编写一个字符串函数,它接受最后一个参数中的任何内容,并将其放入一个新变量中,而不使用参数。在这种情况下,UPS第二天将进行空运 $oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)'; $newVar = 'UPS Next Day Air'; 谢谢 <?php $oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (U

我必须编写一个字符串函数,它接受最后一个参数中的任何内容,并将其放入一个新变量中,而不使用参数。在这种情况下,UPS第二天将进行空运

$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
$newVar = 'UPS Next Day Air';
谢谢


<?php
$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
$newVar = '';
if (preg_match('/.*\((.+)\)/s', $oldVar, $matches))
{
    $newVar = $matches[1];
} else {
    // the input $oldVar did not contain a matching string
}

var_dump($newVar);

如果
$oldVar
中有匹配的参数,则以下代码将
$newVar
设置为正确的字符串,否则设置为
false

$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
$posLastOpeningParenthesis = strrpos($oldVar, '(');
if ($posLastOpeningParenthesis === false) {
    $newVar = false;
}
else {
    $posLastOpeningParenthesis++; // move the position to behind the opening parenthesis
    $posLastClosingParenthesis = strpos($oldVar, ')', $posLastOpeningParenthesis);
    if ($posLastClosingParenthesis === false) {
        $newVar = false;
    }
    else {
        $newVar = substr($oldVar, $posLastOpeningParenthesis, $posLastClosingParenthesis - $posLastOpeningParenthesis);
    }
}

好的,我自己回答。虽然不算优雅,但很管用。可以重写

$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
//$newVar = 'UPS Next Day Air';

$pos1 = strrpos($oldVar, '(') +1;
$pos2 = strrpos($oldVar, ')');
$strlen = $pos2 - $pos1;


$newVar = substr($oldVar, $pos1, $strlen);

strrpos查找字符的最后一个匹配项

,您希望我们为您执行吗?你尝试过挑战吗?这是作业还是什么?他不想要第一个——他想要最后一个!我迷路了。为什么regexp与第一个匹配?如果它是唯一的,它将只匹配第一个。如果我错了,请纠正我。我还没有测试代码,但是。。。我认为原则是正确的。不,你是对的。在没有仔细检查的情况下,我假设正则表达式找到了所有的括号。很抱歉。此解决方案几乎可以完美运行,但当输入为:$oldVar='United Parcel Service(1件包裹x 4.00磅总重量)(UPS次日)Air')时,它会失败;它没有正确地检测到匹配的右括号和最后一个左括号。感谢您的评论,已修复。问题:如果可能,是否最好避免使用正则表达式而改用字符串函数?@TomCarden在这种情况下:“更好”绝对是个人喜好的问题。可以说,在PHP中,除了最简单的字符串操作外,正则表达式的速度更快,而字符串函数几乎总是更易于阅读和确定发生了什么(这是一个优势,当某人(可能是多年后的你)不得不稍晚更改代码时)。
$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
//$newVar = 'UPS Next Day Air';

$pos1 = strrpos($oldVar, '(') +1;
$pos2 = strrpos($oldVar, ')');
$strlen = $pos2 - $pos1;


$newVar = substr($oldVar, $pos1, $strlen);