我尝试使用简单的dom从网址获取HTML。我想要获得的网址只有两种可能的变体形式。我想要做的是如果我检查标题,当我得到404时,我需要获取另一个URL。
以下是我的代码。我得到了一个意想不到的ELSE"错误。我不确定从哪里开始。请不要对我的代码笑得太厉害,我还不熟悉php:)
非常感谢任何帮助。
<?php
require_once 'libs/simple_html_dom.php';
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
list($chuck, $keep) = explode('=', $url);
list($chuck1, $keep1) = explode('/', $keep);
$myURL = "http://www.example.com/" . $chuck1 . "/" . $keep1 . "-url-1.html";
$myURL2 = "http://www.exmple.com/" . $chuck1 . "/" . $keep1 . "-url-2.html";
$patterns = array();
$patterns[0] = 'find';
$patterns[1] = 'find2';
$patterns[2] = 'find3';
$replacements = array();
$replacements[0] = 'replace1';
$replacements[1] = 'replace2';
$replacements[2] = 'replace3';
$data = str_replace($patterns, $replacements, $myURL, $element);
$data2 = str_replace($patterns, $replacements, $myURL2, $element);
$headers = @get_headers($data);
if (is_array($headers)){
if(strpos($headers[0], '404 Not Found'))
$html2 = @file_get_html($data2);
$element = $html->find('div[class="cool-attribute"]', 0);
echo str_replace($patterns, $replacements, $element);
else
$html = @file_get_html($data);
$element = $html->find('div[class="cool-attribute"]', 0);
echo str_replace($patterns, $replacements, $element);
}
&GT;
答案 0 :(得分:1)
您在if-else块中错过了大括号{ ... }
。
以这种方式修复:
if (strpos($headers[0], '404 Not Found')) {
$html2 = @file_get_html($data2);
$element = $html->find('div[class="cool-attribute"]', 0);
echo str_replace($patterns, $replacements, $element);
} else {
$html = @file_get_html($data);
$element = $html->find('div[class="cool-attribute"]', 0);
echo str_replace($patterns, $replacements, $element);
}
添加标签以缩进代码并不能使其成为一个块。您必须将其括在{ }
中。当您放置if
(或else
,while
等)而没有大括号时,它仅适用于下一行代码。在这种情况下,您编写的代码等同于:
if (strpos($headers[0], '404 Not Found')) {
$html2 = @file_get_html($data2);
}
$element = $html->find('div[class="cool-attribute"]', 0);
echo str_replace($patterns, $replacements, $element);
else // else? why is there an else here, it's not after an if! :)
$html = @file_get_html($data);
$element = $html->find('div[class="cool-attribute"]', 0);
echo str_replace($patterns, $replacements, $element);