Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过正则表达式从字符串中提取“10%折扣”或“25英镑折扣”_Php_Regex_Preg Match_Extract - Fatal编程技术网

Php 通过正则表达式从字符串中提取“10%折扣”或“25英镑折扣”

Php 通过正则表达式从字符串中提取“10%折扣”或“25英镑折扣”,php,regex,preg-match,extract,Php,Regex,Preg Match,Extract,我正在尝试提取字符串的一部分,例如Comet食品准备的10%折扣,我需要提取10%折扣的部分,以便稍后与其他内容匹配 有时字符串以10%的折扣开始,有时以50英镑的折扣开始,所以有点棘手 任何帮助都将不胜感激 谢谢! 米洛斯 这个正则表达式可以帮助你 这个正则表达式可以帮助您\d+\d+%off应该这样做,\d+部分表示“一个或多个数字”。\d+\d+%off应该这样做,\d+部分表示“一个或多个数字”。试试这个:/^.*off/Ui 编辑: 或/[0-9]+。off/Ui试试这个:/^.*of

我正在尝试提取字符串的一部分,例如Comet食品准备的10%折扣,我需要提取10%折扣的部分,以便稍后与其他内容匹配

有时字符串以10%的折扣开始,有时以50英镑的折扣开始,所以有点棘手

任何帮助都将不胜感激

谢谢! 米洛斯

这个正则表达式可以帮助你


这个正则表达式可以帮助您

\d+\d+%off应该这样做,\d+部分表示“一个或多个数字”。

\d+\d+%off应该这样做,\d+部分表示“一个或多个数字”。

试试这个:/^.*off/Ui

编辑:
或/[0-9]+。off/Ui

试试这个:/^.*off/Ui

编辑:

或/[0-9]+。关闭/Ui

谢谢!几乎正常工作:。。。当我回来时,我得到了英镑符号�3关,谢谢!几乎正常工作:。。。当我回来时,我得到了英镑符号�3 off。这将捕获任何带有off这个词的句子。它也太贪婪了。在这句话里,你打算去度假吗?下次预订可享受10%的折扣。您的正则表达式将在假期返回?得到10%。不要贪心,看一下你的选择。这会抓住任何一句话,其中有一个词关闭。它也太贪婪了。在这句话里,你打算去度假吗?下次预订可享受10%的折扣。您的正则表达式将在假期返回?获取10%。不要贪心,看一看U选项如果你从其他网站截取数据,你需要处理他们使用的任何字符编码、实体和转义。特别是在HTML页面中,数据可以用多种方式表示。我不是在废弃数据,这是针对我们自己的网站,并且编码设置为UTF-8。如果要从其他网站截取数据,则需要处理它们使用的任何字符编码、实体和转义。特别是英镑可以在HTML页面中以多种方式表示。我不是在废弃数据,这是为我们自己的网站设计的,编码设置为UTF-8也可以,但在其他示例中,当英镑符号返回时,它看起来像�3关。@Milos这听起来像是正则表达式的另一个问题。将网页设置为UTF-8可能是个问题,因为不幸的是PHP仍然没有真正的Unicode支持。您是否尝试过使用ISO 8859-1并查看其是否有效?还有另一个问题,有时会有2.5%的折扣,在这种情况下,它只返回最后一位数字,例如5%的折扣。你知道怎么解决这个问题吗?谢谢@Milos将\d部分更改为?:\d\124;\。相反,它应该解决这个问题。工作正常,但和其他示例一样,当pound符号返回时�3关。@Milos这听起来像是正则表达式的另一个问题。将网页设置为UTF-8可能是个问题,因为不幸的是PHP仍然没有真正的Unicode支持。您是否尝试过使用ISO 8859-1并查看其是否有效?还有另一个问题,有时会有2.5%的折扣,在这种情况下,它只返回最后一位数字,例如5%的折扣。你知道怎么解决这个问题吗?谢谢@Milos将\d部分更改为?:\d\124;\。相反,我们应该解决这个问题。
((?:£\d*|100%|[0-9][0-9]?%) off)