Php 通过preg_替换删除价格
我试图通过preg_替换为正则表达式从字符串中删除price,但它不起作用。我想从给定字符串中删除202,00Php 通过preg_替换删除价格,php,regex,string,preg-replace,price,Php,Regex,String,Preg Replace,Price,我试图通过preg_替换为正则表达式从字符串中删除price,但它不起作用。我想从给定字符串中删除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 3倍长,2倍宽,4 x x长,2倍宽 任何帮助都将不胜感激。您可
<?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 3倍长,2倍宽,4 x x长,2倍宽
任何帮助都将不胜感激。您可以使用正则表达式:
(?<=€\s)(\d*,?\d+)
输出:
4 x 3 x 1欧元、2 x 2欧元、4 x x x 2欧元
您可以试试。您可以使用正则表达式:
(?<=€\s)(\d*,?\d+)
输出:
4 x 3 x 1欧元、2 x 2欧元、4 x x x 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);
见
由于模式包含Unicode字符,因此向正则表达式添加u修饰符更安全。模式匹配
\s*-0+空格
?:-\s*?-可选的-和0+空格序列
欧元-欧元符号
\s*-0+空格
\d+-1+位
?:,\d+?-可选的、和1+数字序列。
你可以用
$haystack = "4 x 3XS - € 202,00, L, 2XS, 4 x XS - € 202,00, S";
echo preg_replace('/\s*(?:-\s*)?€\s*\d+(?:,\d+)?/u','',$haystack);
见
由于模式包含Unicode字符,因此向正则表达式添加u修饰符更安全。模式匹配
\s*-0+空格
?:-\s*?-可选的-和0+空格序列
欧元-欧元符号
\s*-0+空格
\d+-1+位
?:,\d+?-可选的、和1+数字序列。
预期结果是什么?@WiktorStribiżew我编辑了问题请检查预期结果预期结果是什么?@WiktorStribiżew我编辑了问题请检查预期结果result@NiravJoshi请注意,“/?@WiktorStribiżew比如何解决这个问题更重要。你能帮帮我吗?@WiktorStribiż新观点很好,谢谢。我已经更新了我的答案Nirav。@UnderrableLightness是的,但是字符串中仍然有欧式符号,OP也需要删除它们,如果有连字符的话。至少我是这样解释问题中的预期输出的。事实上,我不明白在你的模式中查找和捕获组的目的,你不需要这些构造。@WiktorStribiżew是的,我只是说OP的最新编辑。起初,这些信息并不存在。至少这是我收集的,我想删除202,00。@NiravJoshi注意到“/?@WiktorStribiżew比如何解决这个问题更重要。你能帮帮我吗?@WiktorStribiż新观点很好,谢谢。我已经更新了我的答案Nirav。@UnderrableLightness是的,但是字符串中仍然有欧式符号,OP也需要删除它们,如果有连字符的话。至少我是这样解释问题中的预期输出的。事实上,我不明白在你的模式中查找和捕获组的目的,你不需要这些构造。@WiktorStribiżew是的,我只是说OP的最新编辑。起初,这些信息并不存在。至少这是我收集的,我想删除202,00。太棒了。工作得很好。非常感谢你令人惊叹的工作得很好。非常感谢你