我正在寻找PHP中的字符串分析。他们看起来像这样:
高级升级(€10.00)
我想检测字符串何时包含'(€10.00)',但价格会发生变化。因此我猜测'支架,浮子,支架'的RegEx最终结果是我想从字符串中删除价格,但是,它可能出现在括号中的其他东西,例如。
高级升级(每人)
因此我不能只在第一个开口括号上爆炸或子串。但是,可能有两个或更多个括号,例如
高级升级(每人)(10.00欧元)
因此,在这种情况下,我需要输出:
高级升级(每人)
因此,我的高级别流程将是:
我的pysedo代码是:
//Get my string
$str = $meta->display_key;
//I need a RegEx here to detect my bracket and float e.g. (€X.YY)
if (strpos($str, '(') !== false) {
//Need to remove brackets and float here, but leave all other brackets in place.
$formatted_string = substr($str, 0, strrpos($str, '('));
}
//Do nothing, the string doesn't match my criteria
else $display_key_formatted = $str;
答案 0 :(得分:1)
要删除(
+ CURRENCY_SYMBOL
+ FLOAT_OR_INT_NUMBER
+ )
中括号内的价格,您可以使用
$res = preg_replace('~\s*\(\p{Sc}\d[.\d]*\)~u', '', $s);
请参阅regex demo
<强>详情
\s*
- 0+ whitespaces \(
- (
\p{Sc}
- 任何货币字符\d
- 数字[.\d]*
- 0 +字符.
或数字\)
- )
参见PHP演示:
$re = '/\s*\(\p{Sc}\d[.\d]*\)/u';
$str = ' TEXT (text) (€10.00)';
$res = preg_replace($re, '', $str);
echo $res; // => TEXT (text)
答案 1 :(得分:0)
你正在寻找像!\((.\d+\.\d+\))!
这样的正则表达式,它应该与货币和括号内的价格匹配。