PHP удалить cid в конце URL - PullRequest
1 голос
/ 09 июля 2019

Я работаю над своим PHP, чтобы получить изображения cid из тела письма. Я хотел бы удалить cid:ii_jv1bt7pm0, cid:HeaderImage или что-то еще, что это шоу в конце URL.

Когда я пытаюсь это сделать:

$cid = 'cid:'.substr($cid, 1, strlen($cid)-2);

Он покажет cid в конце URL, например:

http://example.com/#inbox/u/?id=123456&attid=0.1&msgid=1630808059112201633&view=attachment&display=viewii_jv1bt7pm0

Итак, я хочу добиться, чтобы это выглядело так:

http://example.com/#inbox/u/?id=123456&attid=0.1&msgid=1630808059112201633&view=attachment&display=view

Вот это вывод для $cid:

cid:ii_jv1bt7pm0
cid:HeaderImage

Я хочу удалить строки, чтобы заменить их пустыми строками, чтобы эти строки не отображались в конце URL.

Вот полный код:

<?php

require_once "Mail.php";
require_once('Mail/IMAPv2.php');
$username = 'myusername';
$password = 'mypassword';
$mailserver = '{imap.example.com:993/imap/ssl/novalidate-cert}'.$_POST['mailserver'];

$mailbox = imap_open($mailserver, $username, $password) or die("Can't connect: " . imap_last_error());
email_number = 'somerandomnumbers';
$attachment = getAttachment($mailbox, $email_number);

function getAttachment(&$mail, $email_number) {


    $attachments = $mail->attachments;
    $msgNo = trim($mail->headerInfo->Msgno);
    $key = "somekeys";
    $email_id = bin2hex(openssl_encrypt($email_number, 'AES-128-CBC', $key));
    $attach_id = 0;
    $inline_id = 0.1;
    $html = '';

    foreach ($attachments as $attachment) {
        $partNo = $attachment['part'];
        $filename = $attachment['filename'];
        $filename = htmlentities($filename);

        $cid = $attachment['id'];

        if (isset($cid)) {

            if (strpos($mail->htmlText, 'viewHeaderImage')) {
                $mail->htmlText = str_replace('viewHeaderImage', 'view', $mail->htmlText);
            }
            else {
                $cid = 'cid:'.substr($cid, 1, strlen($cid)-2);
            }

            if($filename == 'noname.gif') {
                $tempfile = '/u/?id='.$email_id.'&attid='.$inline_id.'&msgid=1630808059112201633&view=attachment&display=view';
            }
            else {
                $tempfile = '/u/?id='.$email_id.'&attid='.$inline_id.'&msgid=1630808059112201633&view=attachment&display=view';
            }
            $mail->htmlText = EmailEmbeddedLinkReplace($mail->htmlText, $cid, $tempfile);
        }
    }
}


function EmailEmbeddedLinkReplace($html, $cid, $link)
{
    // In $html locate src="cid:$cid" and replace with $link.
    $cid = 'cid:'.substr($cid, 1, strlen($cid)-2);
    $newHtml = str_replace($cid, $link, $html);
    return $newHtml;
}

Я пытался использовать $cid = '';, но это не имело бы никакого значения, потому что cid все равно будет отображаться в конце URL.

Не могли бы вы показать мне пример того, как я могу удалить cid:ii_jv1bt7pm0, cid:HeaderImage или что-то еще, чтобы удалить его, чтобы они не отображались в конце URL?

Ответы [ 3 ]

1 голос
/ 09 июля 2019

Исходя из вашего комментария в EmailEmbeddedLinkReplace(), кажется, что это то, что вам нужно:

function EmailEmbeddedLinkReplace($html, $cid, $link)
{
    // In $html locate src="cid:$cid" and replace with $link.
    return str_replace('src="cid:'.$cid.'"', $link, $html);
}
1 голос
/ 09 июля 2019

Извините, что я не совсем понял природу вашего вопроса.Однако,

$cid = "http://example.com/#inbox/u/?id=123456&attid=0.1&msgid=1630808059112201633&view=attachment&display=viewii_jv1bt7pm0";
$cid = substr($cid,0,strrpos($cid,"display=view")+12);
echo $cid;

В этом коде я использовал strrpos, чтобы найти последние display=view из $cid, а затем добавил длину display=view, то есть 12. Наконец, я обрезалURL от 0-index до end-index из display=view.

Вывод для кода выше будет:

http://example.com/#inbox/u/?id=123456&attid=0.1&msgid=1630808059112201633&view=attachment&display=view

Надеюсь, это поможет

0 голосов
/ 09 июля 2019

Используйте rtrim для удаления последней строки из строки.

echo rtrim("http://example.com/#inbox/u/?id=123456&attid=0.1&msgid=1630808059112201633&view=attachment&display=viewii_jv1bt7pm0","ii_jv1bt7pm0");
...