我必须编写一个字符串函数,它将最后一个括号中的任何内容放入一个新变量中,而不需要括号。在这种情况下,UPS Next Day Air。
$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);
<?php
$oldVar = 'United Parcel Service (1 pkg x 4.00 lbs total) (UPS Next Day Air)';
$newVar = preg_replace('/.+\((.+?)\)[^\)]*$/', '$1', $oldVar);
?>
好的,我自己回答了。几乎没有优雅,但它的工作原理。可以重写...
$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 查找最后一次出现的字符
$newVar
如果存在匹配的括号,则以下代码设置为正确的字符串$oldVar
,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);
}
}