Frage

Ich habe entdeckt, dass jedes Mal, wenn ich wie folgt vor:

echo '<a href="http://" title="bla">huzzah</a>';

ich am Ende mit dem folgenden Browser gerendert werden:

<a href="http:///" title="bla">huzzah</a>

Dies ist besonders ärgerlich, wenn ich mit einer Erweiterung in eine Datei verknüpfen, wie es die Verbindung bricht.

Irgendwelche Ideen, warum dies geschieht und wie kann ich es beheben?

Update: Für diejenigen, über meine genaue Umsetzung gefragt, hier ist es. In meiner Fehlersuche habe ich dumbed es so viel nach unten, wie ich kann, so bitte nicht dagegen, wo ich Klartext concat auf Plaintext ...

function print_it($item) {
    echo '<div class="listItem clearfix">';
    echo '<div class="info">';
    echo '<span class="title">';
    if(isset($item[6])) {
        echo '<a href="http://" title="">' . 'me' . '</a>';
    }
    echo '</span>';
echo '</div></div>';
}

Update: Als Reaktion auf Matt Long, klebte ich in Ihrer Linie und es machte das gleiche.

Update: Als Reaktion Lancer Feuer, ich habe in meiner ursprünglichen Versuch stellen, und Sie zeigen sowohl unten.

echo substr($item[6],13) . '<br>';
echo '<a href="http://' . substr($item[6],13) . '" title="' . $item[0] . '">' . $item[0] . '</a>';

<span class="title">www.edu.gov.on.ca%2Feng%2Ftcu%2Fetlanding.html<br>
<a href="http://www.edu.gov.on.ca%2Feng%2Ftcu%2Fetlanding.html" title="Employment Ontario">Employment Ontario</a></span>

Der Grund für das substr'ing an die URL aufgrund wird durch rawurlencode run () an anderer Stelle, und die Verknüpfung zu http% 3A% 2F% 2F macht die Seite denkt, es ist ein lokaler / relativer Link.

Update: Ich klebte die obige Antwort ohne wirklich es zu betrachten. So ist die HTML korrekt ist, wenn Quelle sehen, aber die eigentliche Seite interpretiert sie mit einem anderen Schrägstrich nach.

Lösung: Das war alles ein Ergebnis der rawlurlencode (). Wenn ich decodiert wird, oder übersprungen alle zusammen die Codierung, funktionierte alles perfekt. Etwas über rawurlencode () macht der Browser einen Schrägstrich in dort bleiben wollen.

War es hilfreich?

Lösung

Firefox, vor allem, zeigen Sie die HTML-Quelle so, wie es es ist zu sehen, die nur selten die Art und Weise ist, dass Sie ihm geschickt haben. Offensichtlich etwas über Ihren Link oder es Kontext macht der Browser Slash interpretieren.

Ich frage mich, ob es sich um eine Nebenwirkung der URL-Codierung ist. Wenn Sie rawurldecode wird es, dass Hilfe. Wenn es Teile der URL, die verschlüsselt bleiben müssen Sie für die Schrägstriche suchen könnte und stellen nur diejenigen zurück.

Andere Tipps

Ive hatte nie, wie ecactly Sie die Verknüpfung Echo? Alle folgenden sollte funktionieren.

echo '<a href="http://someothersite.com">Link</a>';
echo '<a href="anotherpage.php">Some page</a>';
echo '<a href="../pageinparentdir.php">Another page</a>';
etc

bearbeiten, da Sie die Info hinzugefügt.

Sie können nicht nur http: // als href, auch den Link direkt in eine HTML-Seite eingegeben hat diesen Effekt. zB:
html:

 <a href="http://" title="bla">huzzah</a>

Link (in FF3):

http:///

Der Fehler muss woanders sein. echo schreibt die Zeichenfolge, wörtlich. Keine Nachbearbeitung wird auf jedem Teil getan. Der zusätzliche Schrägstrich wird deshalb an anderer Stelle in Ihrem Code (vor dem Passieren der Zeichenfolge echo) hinzugefügt.

Haben Sie das gleiche Ergebnis, wenn Sie doppelte Anführungszeichen verwenden und die Flucht interne doppelte Anführungszeichen wie das?

echo "<a href=\"http://\" title=\"bla\">huzzah</a>";

Wenn ich den echo-Befehls in meinem PHP-Code zu setzen, gibt es „http: //“ wie erwartet (Sie, dass in der Quelle der erzeugten Ausgabe sehen), aber wenn ich dann die Maus über den Link in der Ergebnisseite (mit IE7), es zeigt http:. ///

Meine Vermutung ist, dass das Browser-Verhalten ist, weil es keinen http sein kann: // Link ohne Hostnamen oder die IP-Adresse (Sie können nicht nur das Protokoll zugreifen)

.

Wie einige Leute darauf hingewiesen, ‚http: //‘ ist keine gültige Verbindung, so dass Ihr Browser fügt den zusätzlichen Schrägstrich am Ende. Um zu sehen, um es, versuchen, einen Luchs -dump http: //yourdomain/yourfile.php (wenn Sie Glück haben, genug, um einen linux zu haben) oder Telnet von Ihrem System zu Ihrem Server in Port 80 und schreibe dies:

GET /path/file.php HTTP/1.0

und Blick auf das Ergebnis.

Haben Sie sich in Ihre PHP-Konfigurationseinstellungen? Es könnte sein, magic_quotes_gpc Dinge für Sie zu entkommen entscheiden (ich habe von dieser Einstellung mehrmals gebissen worden, vor allem, wenn mit AJAX / JSON Verkehr arbeiten). Versuchen Sie sicherstellen, dass es aus ist und Echo wieder (möglicherweise müssen Sie Ihre php.ini-Datei bearbeiten, oder fügen Sie php_flag magic_quotes_gpc off zu einer .htaccess-Datei in dem Verzeichnis, das Sie werden in der Arbeit, je nach Umgebung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top