0

我必须编写一个字符串函数,它将最后一个括号中的任何内容放入一个新变量中,而不需要括号。在这种情况下,UPS Next Day Air。

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

谢谢!,

4

4 回答 4

1
<?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);
于 2013-08-07T23:54:07.410 回答
1
<?php
$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
$newVar = preg_replace('/.+\((.+?)\)[^\)]*$/', '$1', $oldVar);    
?>
于 2013-08-07T23:56:53.077 回答
0

好的,我自己回答了。几乎没有优雅,但它的工作原理。可以重写...

$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 查找最后一次出现的字符

于 2013-08-08T01:37:08.747 回答
0

$newVar如果存在匹配的括号,则以下代码设置为正确的字符串$oldVarfalse否则。

$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);
    }
}
于 2013-08-08T00:36:34.823 回答