价格通过 preg_replace 移除

price remove via preg_replace

我正在尝试使用正则表达式 通过 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

任何帮助将不胜感激。

您可以使用正则表达式:

(?<=€\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.

您可以使用

$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+ 位的可选序列。