我有一個HTML字符串。爲了這個目的,可以說該字符串是:preg_replace加上附加在開始和結束在src內替換cid:
<img id="Picture_x0020_1" src="cid:[email protected]" alt="Variety 008 (893 x 799) (223 x 200)" height="200" width="223">dflkjdslkjdsfldskfjdlfkjdlfksdjfflkdsjfdlkdfdjflkdfjdlkjfkdlfjdljfldjfldjflkdjjfkd<img id="Picture_x0020_1" src="cid:[email protected]" alt="Variety 008 (893 x 799) (223 x 200)" height="200" width="223">hkjhkhkhkhkhkjhjkhhkjhkjhkjhkjhjkhkjhkjhkhkjhkjhjkhkjhkjhkjhkjhkjhkjhkjhkjhkjhkjhkjhkjhkjh<img id="Picture_x0020_1" src="cid:[email protected]" alt="Variety 008 (893 x 799) (223 x 200)" height="200" width="223">dsjhfdsjfdjflsjflkjdflkjffldskjfdljdlfkjflkdjflkdjfdslkjfkds
現在讓我們看看字符串我需要做一些工作,這是Gmail保存圖像名稱中的src =「」:
我使用的下載和類保存附件如下:
$cid = 'cid:[email protected]';
$mail_id . '_' . $cid . '_' . $image_id;
所以實際形象的名字是這樣的: [email protected]_image001.jpg
現在我的目標是,以取代所有這些事件的:
CID:[email protected] .CF7A44B0
與
attachments/[email protected]_image001.jpg
實質上剝離了cid:string,將$ mail_id和_追加到字符串的開頭,_image001.jpg結束。
記住生病可能有一堆這些嵌入式CID SRC在HTML字符串
所以沒有用正則表達式這麼好我這樣做在嬰兒的步驟,首先,我試圖找出如何用附件/[email protected]替換cid:[email protected],然後試着弄清楚如何在最後添加_image001.jpg。
我設法建立,突出整體形象標識,在http://www.regexr.com/運行它,它不突出CID的正則表達式:在元素[1]值:
我想是這樣的,但它只是返回一個空字符串,但邏輯似乎在正則表達式工具,所以我無法弄清楚爲什麼它不工作,也許它是因爲正則表達式有3個元素,我需要訪問元素[1]獲取cid:值,不知道:
$string = preg_replace('/(<img\b\s+.*?src=\")(.*?cid:.*?)(\">)/g', 'attachments/'.$mail_id.'_', $html);
但這裏的問題是我只需要更換cid:附件/ 308907_,我不想替換t他[email protected]部分。
我也不確定在最後追加_image.jpg的最佳方式。如果它只是一個替代我可以做這樣的事情:
$current_image_name = 'attachments/[email protected]';
$new_image_name = 'attachments/[email protected]_image001.jpg';
str_replace($current_image_name, $new_image_name,$html);
但是因爲可能有很多,這些在電子郵件我不認爲這種做法會工作,它可能不是很好的性能明智的,因爲有些電子郵件可能在某些情況下很大。
我擔心的是,因爲它可能是一個很大的電子郵件解析,所以可能有一種方法與preg_replace函數同時執行的方法,因此調用效率不高。
如果有人甚至指出我在正確的方向,並給我一些關於實現這一目標的最佳方式的提示,我很高興能夠找出實際的代碼。
完美解析爲第三個參數的用戶定義的數組名,除非您在$ mailid缺少串聯的偉大工程。應該是這樣的:$ subst =「src = \」attachments /".$ mailid。「_ $ 1 @ $ 2_ $ 1 \」「;請更新,並接受答案,並讚揚。感謝您的幫助 – user1547410
也爲了我和其他人的利益,你可以解釋$ subst線的情況。我知道發生了什麼事情,因爲它建立了帶有附件/ $ mailid_前綴的src字符串的開始,然後$ 1 @ $ 2我假設回聲圖片[email protected]部分,最後_ $ 1回聲顯示image001.jpg 我不明白的是你從哪裏建立$ 1,$ 2變量,是從$ re的regex的元素中拉出來的,還是它與substr函數有某些聯繫? – user1547410
更新了我的答案,但如果您有任何疑問,請告訴我 – vidhya