通过preg_replace删除价格

时间:2018-07-26 21:41:14

标签: php regex string preg-replace price

我正在尝试通过带有正则表达式的 preg_replace 从字符串中删除价格,但无法正常工作。我想从给定的字符串中删除202,00

<?php
   $haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
   echo preg_replace('/^(?:0|[1-9]\d*)(?:\,\d{2})?$/','',$haystack);
?>

预期结果:

4 x 3XS,L,2XS,4 x XS,S

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

(?<=€\s)(\d*,?\d+)
  • (?<=€\s)向后寻找符号和空格。
  • (\d*,?\d+)捕获数字(可选,逗号)。

您的代码变为:

 <?php
   $haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
   echo preg_replace('/(?<=€\s)(\d*,?\d+)/','',$haystack);
?>

输出

4 x 3XS - € L, 2XS, 4 x XS - € S

您可以here试试。

答案 1 :(得分:2)

您可以使用

$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/\s*(?:-\s*)?€\s*\d+(?:,\d+)?/u','',$haystack);

请参见PHP demo online

由于模式包含Unicode字符,因此将u修饰符添加到正则表达式会更安全。模式匹配

  • \s*-超过0个空格
  • (?:-\s*)?--和0+空格的可选序列
  • -欧元符号
  • \s*-超过0个空格
  • \d+-1个以上数字
  • (?:,\d+)?-,和1个以上的数字的可选序列。