我如何在echo字符串中打印一些数组

时间:2016-05-24 15:24:19

标签: php

我使用file_get_contents提取网站的som html信息,我希望通过echo打印ti

我该怎么做

$page = file_get_contents('*******');
preg_match("/<span class=\"a-text-strike\".*span>/", $page, $precio_antes);
preg_match("/<span id=\"priceblock_ourprice\".*span>/", $page, $precio_ahora);
preg_match("/<td class=\"a-span12 a-color-price a-size-base\".*td>/", $page, $precio_descuento);

echo "Antes: ".$precio_antes. "Ahora: " .$precio_ahora." (-" .$precio_descuento. "%)";

2 个答案:

答案 0 :(得分:0)

$ precio_descuento就是数组

不是$precio_descuento而是$precio_descuento[0]

implode('', $precio_descuento)

ps:和其他人一样

答案 1 :(得分:0)

您应该稍微更改正则表达式,因为您不会总是得到预期的结果:

  • .*懒惰,否则会跳过一些结束</span>代码并直接转到最后一个:.*?;

  • 使.也匹配换行符,否则如果开始和结束标记不在同一行,匹配将无法找到任何内容:使用s模式修饰符;

  • 由于代码可以嵌套,请务必测试结束标记,包括斜杠:/span>,而不只是span>;

  • preg_match is an array的第三个参数中的结果,因此您需要采用您感兴趣的元素:[0]

改编代码:

preg_match("/<span\s+class=\"a-text-strike\".*?\/span>/si", $page, $precio_antes);
preg_match("/<span\s+id=\"priceblock_ourprice\".*?\/span>/si", $page, $precio_ahora);
preg_match("/<td\s+class=\"a-span12\s+a-color-price\s+a-size-base\".*?\/td>/si", $page, $precio_descuento);


echo "Antes: {$precio_antes[0]} Ahora: {$precio_ahora[0]} (-{$precio_descuento[0])}";

解析DOM

一般不建议使用正则表达式来解析HTML。总是会出现错误的情况,因为提供程序更改了属性的顺序,或者用单引号替换了双引号,......等等。你真的应该看看DOMDocument来解析HTML。

相关问题