Dies ist so ziemlich die gleichen Informationen wie ein früherer Post von mir, aber es ist eine andere Frage.entfernen Schrägstrich von Hyperlink href
Ich habe eine Variable von $this->post['message']
was ist der Benutzer Beiträge.
Wenn der Benutzer-Beiträge:
Check out this vine https://vine.co/v/iF20jKHvnqg/
Sobald die HTML-Ausgabe vorgelegt wie folgt aussieht:
Check out this vine <a href="https://vine.co/v/iF20jKHvnqg/" target="_blank">https://vine.co/v/iF20jKHvnqg/</a>
und das ist, was $this->post['message']
gleich ist. Diese findet Rebe Links in Beiträgen und wandelt sie in der einen Iframe
Also in meinem hinteren Ende habe ich ein Plugin
$drc_embed_vine = '<iframe src="https://vine.co/v/$2/embed/simple" width="480" height="480" frameborder="0"></iframe>';
$this->post['message'] = preg_replace('~(<a href="https?://vine.co)/v/(.*)" target="_blank">(https?://vine.co)/v/(.*)<\/a>~', $drc_embed_vine, $this->post['message']);
erstellt. Ich habe allerdings ein Problem mit dem Endslash.
Wenn ein Benutzer https://vine.co/v/iF20jKHvnqg
postet, der einmal in <a href="https://vine.co/v/iF20jKHvnqg" target="_blank">https://vine.co/v/iF20jKHvnqg</a>
umgewandelt wird, wird er in einen iframe-Fehler umgewandelt.
Aber wenn der Benutzer https://vine.co/v/iF20jKHvnqg/
, die sich zu <a href="https://vine.co/v/iF20jKHvnqg/" target="_blank">https://vine.co/v/iF20jKHvnqg/</a>
ändert, wird es nicht konvertiert. Der Unterschied ist der Schrägstrich.
Jetzt habe ich versucht:
$this->post['message'] = rtrim($this->post['message'],"/");
$drc_embed_vine = '<iframe src="https://vine.co/v/$2/embed/simple" width="480" height="480" frameborder="0"></iframe>';
$this->post['message'] = preg_replace('~(<a href="https?://vine.co)/v/(.*)" target="_blank">(https?://vine.co)/v/(.*)<\/a>~', $drc_embed_vine, $this->post['message']);
Aber das scheint nicht zu arbeiten, ist es eine Möglichkeit, ich Rebe Links innerhalb von $this->post['message']
ausrichten kann und den abschließenden Schrägstrich entfernen, oder sogar den abschließenden Schrägstrich entfernen jeder Link in $this->post['message']
Also, wenn
$this->post['message'] = 'Go to <a href="http://stackoverflow.com/questions/ask/" target="_blank">http://stackoverflow.com/questions/ask/</a>';
Es
werden würde$this->post['message'] = 'Go to <a href="http://stackoverflow.com/questions/ask" target="_blank">http://stackoverflow.com/questions/ask</a>';
Ich bin hauptsächlich auf die Vine Links im Moment konzentriert, aber wenn es möglich ist, für alle Links, die auf lange Sicht besser funktionieren können.So
Meine letzten gescheiterten Versuch (ich bin immer noch versuchen, das herauszufinden)
$drc_embed_vine = '<iframe src="https://vine.co/v/$2/embed/simple" width="480" height="480" frameborder="0"></iframe>';
$str = $this->post['message'];
$str = rtrim($str, '/');
$str = preg_replace('~(<a href="https?://vine.co)/v/(.*)" target="_blank">(https?://vine.co)/v/(.*)<\/a>~', $drc_embed_vine, $str);
Versuchte etwas anderes nur rumgespielt habe ich dies einen Schuss
$str = $this->post['message'];
$str = rtrim($str, '/');
$this->post['message'] = $str;
der Pfosten ist
<a href="http://vine.co/v/iF20jKHvnqg/" target="_blank">http://vine.co/v/iF20jKHvnqg/</a>
und die rtrim
hatte keine Wirkung =/
aber wenn ich
$this->post['message'] = $str;
zu
$this->post['message'] = test;
jeder Beitrag TEST
dreht sich zu ändern, so sehe ich nicht, warum die rtrim nicht hat effect =/
Aktualisierung für Klarheit
$this->post['message'] = 'Check out this vine <a href="http://vine.co/v/iF20jKHvnqg/" target="_blank">http://vine.co/v/iF20jKHvnqg/</a>';
$drc_embed_vine = '<iframe src="https://vine.co/v/$2/embed/simple" width="480" height="480" frameborder="0"></iframe>';
$str = $this->post['message'];
$str = rtrim($str, '/');
$str = preg_replace('~(<a href="https?://vine.co)/v/(.*)" target="_blank">(https?://vine.co)/v/(.*)<\/a>~', $drc_embed_vine, $str);
FUNKTIONS UPDATE!
Nach Richards Antwort spielte ich mit dem ein Bit-Plug-und kam mit
$drc_embed_vine = '<iframe src="https://vine.co/v/$2/embed/simple" width="480" height="480" frameborder="0"></iframe>';
$this->post['message'] = preg_replace('+/(["<])+', '$1', $this->post['message']);
$this->post['message'] = preg_replace('~(<a href="https?://vine.co)/v/(.*)" target="_blank">(https?://vine.co)/v/(.*)<\/a>~', $drc_embed_vine, $this->post['message']);
Dies funktioniert auf! =) aber ist es der effizienteste Weg ...?
Können Sie einfachere Beispiel ohne alle Gespräche erstellen, was sonst nicht funktioniert? Ich sehe nicht, wo der $ this-> post ['message'] konvertiert wird. rtrim würde natürlich nicht funktionieren, wenn die Variable mit endet. – Richard
Ich werde etwas zum OP hinzufügen, damit es besser formatiert ist, was brauchst du mehr? –
Hinzugefügt ein kleines Beispiel –