在行尾获取括号内的百分比值

时间:2015-09-24 09:10:31

标签: php regex preg-replace-callback

我有一个像

这样的字符串
Just a text (12%)

现在我想获取百分比值并删除括号。到目前为止,我得到了这个regEx:

$result = array();
$content = preg_replace_callback('~\(([^)]*)\)~', function ($m) use (&$result) {
    $percentage = $m[1]/100;
    return '';
}, $content);
echo trim($content)."|".$percentage;

这应该给我输出Just a text|0.12。当前的regEx不会丢弃%-character。

更新

我需要检查百分比值是否是正确的整数 - 有时候有

text (10-15%)

在这种情况下,根本不会发生任何事情。字符串保持原样。

2 个答案:

答案 0 :(得分:1)

CREATE TABLE #TEST(ID INT,VALUE INT) INSERT INTO #TEST VALUES (1,10),(2,20),(3,30),(4,40),(5,50),(6,60),(7,70) ;WITH CTE as ( SELECT ID,VALUE,VALUE AS RESULT FROM #TEST WHERE ID=1 UNION ALL SELECT T.ID,T.VALUE,T.VALUE+C.RESULT FROM #TEST T INNER JOIN CTE C ON T.ID = C.ID+1 ) SELECT * FROM CTE 放入正则表达式:

%

答案 1 :(得分:0)

您需要将$percentage var作为对闭包的引用传递给您,以便以后可以使用它。

$content = preg_replace_callback('~\(([^)]*)\)~', function ($m) use (&$result, &$percentage) {
    $percentage = $m[1]/100;
    return '';
}, $content );