Frage

Dies ist mein Code:

<?php
$url = "http://www.uhasselt.be/collegeroosters/2009_2010_298_5_10.html";
$headers = get_headers($url, 1);
print_r($headers);
$contloc = $headers["Content-Location"];
echo "Content-Location: " . $contloc . "\n";
$soft404test = strpos($contloc, "http://www.uhasselt.be/404b.htm") ? true : false;
var_dump($soft404test);
?>

Dies ist seine Ausgabe:

Array
(
    [0] => HTTP/1.1 200 OK
    [Content-Length] => 2030
    [Content-Type] => text/html
    [Content-Location] => http://www.uhasselt.be/404b.htm?404;http://www.uhasselt.be:80/collegeroosters/2009_2010_298_5_10.html
    [Last-Modified] => Mon, 22 Aug 2005 07:10:22 GMT
    [Accept-Ranges] => bytes
    [ETag] => "88a8b68fe8a6c51:31c9e"
    [Server] => Microsoft-IIS/6.0
    [MicrosoftOfficeWebServer] => 5.0_Pub
    [X-Powered-By] => ASP.NET
    [Date] => Tue, 24 Nov 2009 08:40:25 GMT
    [Connection] => close
)
Content-Location: http://www.uhasselt.be/404b.htm?404;http://www.uhasselt.be:80/collegeroosters/2009_2010_298_5_10.html
bool(false)

Dieses Verhalten ist unerwartet. Ich dachte, ich würde es tun, um Soft 404 zu erkennen, indem ich mir das Attribut für die Inhaltsstandort in meinen HTTP-Headern anschaue. Die Strpos -Funktion trifft Entscheidungen, die ich nicht bekomme. Was habe ich falsch gemacht? (Ich brauche das nicht, um an anderen Websites übrigens zu arbeiten.)

War es hilfreich?

Lösung

strpos() Kann falsch zurückkehren, wenn die Zeichenfolge nicht gefunden wird oder 0, wenn die Zeichenfolge am Anfang gefunden wird. In einer booleschen Prüfung bewertet 0 jedoch zu False, sodass Sie den Typ explizit überprüfen müssen:

$soft404test = strpos($contloc, "http://www.uhasselt.be/404b.htm") !== false;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top