Php 从html匹配定价-正则表达式

Php 从html匹配定价-正则表达式,php,regex,preg-match,Php,Regex,Preg Match,可能重复: 我有一个字符串,它通常是,但不总是,html页面源代码 我想从字符串中提取定价。我知道这不是一门精确的科学,货币符号放置等组合是无止境的,但总比没有好 示例字符串: $string = 'the price is <tag>&#163;10.00</tag>'; 当然,这只返回第一个字符 我的问题是,有没有一种方法可以一直遍历$string直到它找到某个字符?e、 还是一个空间?然后返回发现的内容,在本例中为:10.00 这是一种可行的方法还是有更

可能重复:

我有一个字符串,它通常是,但不总是,html页面源代码

我想从字符串中提取定价。我知道这不是一门精确的科学,货币符号放置等组合是无止境的,但总比没有好

示例字符串:

$string = 'the price is <tag>&#163;10.00</tag>';
当然,这只返回第一个字符

我的问题是,有没有一种方法可以一直遍历$string直到它找到某个字符?e、 还是一个空间?然后返回发现的内容,在本例中为:10.00

这是一种可行的方法还是有更好的方法

下面是一个例子:


阅读
preg\u match
的文档,它不会返回您的匹配项,只会在存在匹配项时返回

试试这个

$string = 'the price is <tag>&#163;10.00</tag>';

$price = preg_match_all('#(?:\$|\£|\€|\&pound;|\&\#163;)(\d+(?:\.\d+)?)#', $string, $matches);

//This will contain your matches 
var_dump($matches);
$string='价格是£;10.00';
$price=pregêu matchêu all(“#”(?:\$\\\\\\\\\\\\\\\\\\\\\\£;&\\\\\\\\\\\&163;)(\d+(?:\.\d+),$string,$matches);
//这将包含您的匹配项
var_dump($matches);

使用
preg\u match\u all
(\d+(?:\。\d+)(=)
如何,因为货币可能会变化?使用正则表达式的任何解决方案都将取决于一组假设,因此最好先把这些假设记下来:

  • 你应该在哪里寻找,这些价格是否发生在给定的分区内
  • 全套可能的值是什么
尽量使你的正则表达式更宽泛,因为将来它失败的一个常见原因是你没有考虑到一些小的变化。如果这些价格出现在带有IDS和类的标签中,请考虑使用XHTML解析器替代:


您有html源代码&您需要从该源代码中选择价格?它只返回第一个字符是什么意思?你甚至没有检查matches@ExplosionPills这就是我所说的@GBD,这篇文章是这样说的:我有一个字符串,它通常是,但不总是,html页面源代码。我想从字符串中提取定价。所以,是的。
$string = 'the price is <tag>&#163;10.00</tag>';

$price = preg_match_all('#(?:\$|\£|\€|\&pound;|\&\#163;)(\d+(?:\.\d+)?)#', $string, $matches);

//This will contain your matches 
var_dump($matches);