2017-06-30 2 views
0

Wenn eine Funktion ausgeführt wird, die einen String zurückgibt, habe ich am Ende mit rückwärts Schrägstriche vor einem Anführungszeichen oben, wie folgt aus:entfernen rückwärts in String schlitzt

$string = get_string(); 
// returns: <a href=\"http://example.com/\">Example</a> 

Ich vermute, dass es irgendeine Art ist irgendwo zu entkommen passiert. Ich weiß, dass ich string den umgekehrten Schrägstrich ersetzen kann, aber ich nehme an, in diesen Fällen gibt es eine Art von Unescape-Funktion, die Sie ausführen?

+1

Wo kommt die Zeichenfolge aus – bhttoan

Antwort

2

Sie müssen nur die Anführungszeichen abbrechen, wenn sie mit Ihrem Start-/Endtrennzeichen übereinstimmen. Dieser Code sollte richtig funktionieren:

$string = '<a href="http://example.com/">Example</a>'; 

Wenn die Zeichenfolge in einfache Anführungszeichen‘eingeschlossen ist, dann" nicht entgangen werden muss Ebenso das Gegenteil der Fall ist

Vermeiden Sie stripslashes(), da es.. könnte Probleme verursachen, wenn einfache Anführungszeichen Schrägstriche enthalten müssen ein einfaches suchen/ersetzen sollte für Sie arbeiten.?

$string = '<a href=\"http://example.com/\">Example</a>'; 
$string = str_replace($string, '\"', '"'); 
echo $string; //echos <a href="http://example.com/">Example</a> 
+0

wenn ich die Zeichenfolge echo, ich seh ich n der HTML: 'Example' - der HTML vollständig bricht. –

+0

Haben Sie die '$ string' wie meinen Code Block verändert? Die Zeichenfolge sollte keine umgekehrten Schrägstriche enthalten, wenn Sie meinen Code kopiert haben. – FrankerZ

+0

Nein, tut mir leid wegen der fehlenden Klärung. Ich * bekomme * die Variable tatsächlich über eine Funktion, die diese Zeichenfolge zurückgibt. Also setze ich die Variable nicht selbst. –

2
<?php 

$string = '<a href=\"http://example.com/\">Example</a>'; 

echo stripslashes($string); 

?> 
+0

Wie ich in meiner Antwort gesagt habe, 'stripslashes()' wird beide Backslashes vor Anführungszeichen ** und ** einfache Anführungszeichen entfernen. Dies ist möglicherweise nicht das beabsichtigte Verhalten, so als ob ein einzelnes Anführungszeichen maskiert werden müsste, damit Javascript korrekt funktioniert, das HTML könnte brechen. 'str_replace()' sollte die richtige Lösung sein. – FrankerZ