Я ищу регулярное выражение, которое находит весь путь изображения в теге изображения (src) и преобразует весь путь изображения по cid: filename
<img src="../images/text.jpg" alt="test" />
в
<img src="cid:test" alt="test" />
Спасибо за вашу помощь
Крис
Как предположил Web Logic, я бы предпочел попробовать PHP DOM Extension, особенно если вы работаете со всем HTML-документом. Вы можете передать некоторый фрагмент HTML в экземпляр PHP DOM или содержимое полной HTML-страницы.
Один пример того, как сделать то, что вы предлагаете, если у вас есть только строка элемента изображения, например <img src="../images/text.jpg" alt="test" />
и вы хотите установить атрибут src
этого к имени файла изображения без расширения файла с префиксом cid:
<?php $doc = new DOMDocument(); // Load one or more img elements or a whole html document from string $doc->loadHTML('<img src="../images/text.jpg" alt="test" />'); // Find all images in the loaded document $imageElements = $doc->getElementsByTagName('img'); // Temp array for storing the html of the images after its src attribute changed $imageElementsWithReplacedSrc = array(); // Iterate over the found elements foreach($imageElements as $imageElement) { // Temp var, storing the value of the src attribute $imageSrc = $imageElement->getAttribute('src'); // Temp var, storing the filename with extension $filename = basename($imageSrc); // Temp var, storing the filename WITHOUT extension $filenameWithoutExtension = substr($filename, 0, strrpos($filename, '.')); // Set the new value of the src attribute $imageElement->setAttribute('src', 'cid:' . $filenameWithoutExtension); // Save the html of the image element in an array $imageElementsWithReplacedSrc[] = $doc->saveXML($imageElement); } // Dump the contents of the array print_r($imageElementsWithReplacedSrc);
Распечатывает этот результат (используя PHP 5.2.x в Windows Vista):
Array ( [0] => <img src="cid:text" alt="test"/> )
Если вы хотите установить значение атрибута src
в значение атрибута alt с префиксом cid:
посмотрите на это:
<?php $doc = new DOMDocument(); // Load one or more img elements or a whole html document from string $doc->loadHTML('<img src="../images/text.jpg" alt="test" />'); // Find all images in the loaded document $imageElements = $doc->getElementsByTagName('img'); // Temp array for storing the html of the images after its src attribute changed $imageElementsWithReplacedSrc = array(); // Iterate over the found elements foreach($imageElements as $imageElement) { // Set the new value of the src attribute $imageElement->setAttribute('src', 'cid:' . $imageElement->getAttribute('alt')); // Save the html of the image element in an array $imageElementsWithReplacedSrc[] = $doc->saveXML($imageElement); } // Dump the contents of the array print_r($imageElementsWithReplacedSrc);
Печать:
Array ( [0] => <img src="cid:test" alt="test"/> )
Надеюсь, вы начнете. Это только примеры того, что делать с расширением DOM, ваше описание того, что вам нужно для анализа (фрагменты HTML или полный HTML-документ), и то, что вам нужно для вывода / хранения, было немного неопределенным.
Вы можете обратиться за PHP DOM для анализа вашего html и соответствующим образом выполнить поиск.
В противном случае вы также можете использовать JQuery для этого:
$(function(){ $('img').each(function(){ $(this).attr('src').replace('cid:' + $(this).attr('src')); }); });