Моя хостинговая компания отключила allow_url_fopen & allow_url_include. Они рекомендуют вместо этого использовать cURL, тогда я увидел этот патч на simplexml
$calendar = simplexml_load_file($source); with
if (ini_get('allow_url_fopen')) {
$calendar = simplexml_load_file($source);
}
else {
$ch = curl_init($source);
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_raw = curl_exec($ch);
$calendar = simplexml_load_string($xml_raw); }
и он работает на моем хостинге, поэтому мне было интересно, смогу ли я использовать его на simplehtmldom. Вот код, который я использую
<?php
include('simple_html_dom.php');
include ('phpQuery.php');
// Create DOM from URL
$html = file_get_html('http://www.urlhere.com/');
?>
Могу ли я использовать это? Если да, какие изменения я должен внести, спасибо за вашу помощь
Отредактированный выше код
<?php
include('simple_html_dom.php');
include ('phpQuery.php');
if (ini_get('allow_url_fopen')) {
$html = file_get_html('http://www.weather.bm/'); }
else{ $ch = curl_init('http://www.weather.bm/');
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$src = curl_exec($ch);
$html = str_get_html($src, false);
var_dump($html); }
?>
<div id="leftwrapper">
<div id="CurrentConditions">
<h2>Current Conditions</h2>
<div id="current-content">
<div id="elementleft">
<?php
foreach($html->find('div.obElementLeft') as $e)
echo $e->outertext;
?>
</div>
<div id="elementright"><?php
foreach($html->find('div.obElementRight') as $e)
echo $e->outertext;
?>
</div></div></div>
<div id="rightwrapper">
<div id="TodayForecast">
<h2>24-Hour Forecast</h2>
<?php
foreach($html->find('.TodaysForecastContainer') as $e)
$doc = phpQuery::newDocumentHTML( $e );
$containers = pq('.TodaysForecastContainerInner', $doc);
foreach( $containers as $container ) {
$div = pq('div', $container);
$div->eq(1)->removeAttr('style')->addClass('thumbnail')->
html( pq( 'img', $div->eq(1))->removeAttr('height')->
removeAttr('width')->removeAttr('alt') );
$div->eq(0)->removeAttr('style')->addClass('day')->
html( pq( 'u', $div->eq(0) )->html() );
$div->eq(2)->removeAttr('style')->addClass('description'); }
print $doc;
?>
</div><!--end of todayforecast-->
<div id="bws-foot">Weather data provided in part by the Bermuda Weather
Service</div> <img id="bws-logo" src="images/bwslogo.jpg" />
<div id="hilo">
<p>Today's Temperature:</p>
<?php
foreach($html->find('div.HiLoContainer') as $e)
$doc = phpQuery::newDocumentHTML( $e );
$containers = pq('div.HiLoContainer', $doc);
foreach( $containers as $container ) { $div = pq('div', $container);
$div->eq(0)->removeAttr('style')->addClass('hi1');
$div->eq(1)->removeAttr('style')->addClass('lo1');
} print $doc;
?>
Прогноз
найти ('. SynopsisContainer span') как $ e)
echo $ e-> innertext. '
';
?>
Прогноз погоды на 4 дня
foreach ($ html-> find ('. FourDayForecastContainer') как $ e)
$ doc = phpQuery :: newDocumentHTML ($ e);
$ container = pq ('.FourDayForecastContainerInner', $ doc);
foreach ($ Containers как $ container) {$ div = pq ('span', $ container);
$ img = pq ('img', $ container);
$ Div-> эк (0) -> removeAttr ( 'стиль') -> addClass ( 'день') ->
html (pq ('u', $ div-> eq (0)) -> html ());
$ img-> эк (0) -> removeAttr ( 'стиль') -> removeAttr ( 'высота') ->
removeAttr ( 'ширина') -> removeAttr ( 'альт') -> addClass ( 'эскиз') ->
html (pq ('img', $ img-> eq (0))); $ imghtml = pq ('a', $ container) ->
HTML (); рд ($ контейнер) -> перед именем ($ imghtml); pq ('a', $ container) -> remove ();
$ Div-> экв (1) -> removeAttr ( 'стиль') -> addClass ( 'привет');
$ Div-> эк (3) -> removeAttr ( 'стиль') -> addClass ( 'вот');
$ Div-> экв (5) -> removeAttr ( 'стиль') -> addClass ( 'описание'); } печатать $ doc;
?>