我正在尝试使用IF语句检查变量是否包含一段文本,如果是,则回显是,否则回显否。很简单,我知道,但它似乎并不适合我。我是PHP的新手,所以对于猴子来说,任何回复都应该是可以理解的! :P
这是我的代码。请记住我正在使用PHP简单的html dom。
<?php
include 'simple_html_dom.php';
$html = file_get_html('http://www.amazon.co.uk/New-Apple-iPod-touch-Generation/dp/B0040GIZTI/ref=br_lf_m_1000333483_1_1_img?ie=UTF8&s=electronics&pf_rd_p=229345967&pf_rd_s=center-3&pf_rd_t=1401&pf_rd_i=1000333483&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=1ZW9HJW2KN2C2MTRJH60');
$stock_data = $html->find('span[class=availGreen]',0);
if ( $stock_data == "In stock." ) {
echo "Yes";
}
echo "No";
?>
现在我已使用echo $ stock_data测试变量是否包含文本;它打印正确的文本,但是if语句仍然返回并且回显为No。
任何帮助,如果这很简单就道歉。
答案 0 :(得分:3)
使用功能
var_dump($stock_data);
也许其中有非人类可读的字符,您不会检查它们。您始终可以修剪那些
答案 1 :(得分:1)
我尝试了你的代码,$ stock_data返回:
<span class="availGreen">In stock.</span>
而不是:
有货。
我建议作为一名新开发者,您应该获得Firebug for Firefox或Chrome等工具,它们可以帮助您调试底层错误......虽然在这种情况下,因为html只是输出span标签内的文本,了解$ stock_data等于的唯一方法是查看来源。
答案 2 :(得分:0)
如果陈述
,这是正确的 if ( $stock_data == "In stock." ) {
echo "Yes";
} else {
echo "No";
}
答案 3 :(得分:0)
我对你正在使用的库知之甚少,但是如果它返回一个实现__toString()
(由echo使用)的对象,那么这可能会起作用:
if ( (string) $stock_data == "In stock." ) {
否则,请检查返回您要查找的字符串的成员函数。
我应该从手册中添加:
值得注意的是,在PHP 5.2.0之前,__toString方法仅在与echo()或print()直接组合时才被调用。
因此,如果您正在运行更新的PHP,那么关于转换为字符串的答案部分将不适用。 (可能还有一些成员函数可以调用以获取字符串数据减去HTML和特殊字符。)
答案 4 :(得分:0)
我不确定file_get_html()是什么,但您可能想要使用file_get_contents()(可能使用DOMDocument和DOMXpath)。
$html = file_get_contents('http://www.amazon.co.uk/New-Apple-iPod-touch-Generation/dp/B0040GIZTI/ref=br_lf_m_1000333483_1_1_img?ie=UTF8&s=electronics&pf_rd_p=229345967&pf_rd_s=center-3&pf_rd_t=1401&pf_rd_i=1000333483&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=1ZW9HJW2KN2C2MTRJH60');
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$in_stock = $xpath->query("/html/body/div[@id='divsinglecolumnminwidth']/form[@id='handleBuy']/table[3]/tbody/tr[3]/td/div/span");
if(!empty($in_stock)) {
echo "yes";
} else {
echo "no";
}
如果物品 NOT 库存时占用相同的量程,您可以测试这样的值:
if($in_stock->item(0)->nodeValue == "In stock.") { echo "yes"; } else { echo "no"; }
如果字符串“In stock”,您可能还想使用preg_match。完全改变。