2011-08-08 4 views
0

У меня есть приложение PHP, которое читается в немного HTML. В этом HTML может быть тег img. Я хочу, чтобы удалить структуру каталогов из src тега изображения, например.Структура структуры Strip в HTML

<img src="dir1/dir2/dir3/image1.jpg> 
to 
<img src="image1.jpg"> 

У кого-нибудь есть указатели?

Спасибо, Марк

+0

регулярное выражение не является хорошим HTML-парсер - но если вы решите использовать его, вы можете использовать это (если ваш тэг img хорошо отформатирован и использует двойные кавычки): 'preg_replace ("/src = \ ". + \/(. +) \"/", '" $ 1 "', $ string)' –

ответ

0

Как предложение, а не с помощью регулярных выражений, вы можете быть лучше использовать что-то вроде класса SimpleXML, чтобы пройти через HTML, таким образом вы сможете найти теги IMG и их атрибут src затем легко меняет его. Вместо того, чтобы попробовать и разобрать целый документ с регулярным выражением. После того, как вы это сделали, вы сможете просто взорвать строку с помощью разделителя «/» и использовать последнее значение взорванного массива как атрибут src.

SimpleXML Руководство PHP.net по: http://php.net/manual/en/book.simplexml.php

+0

попробовал это, но синтаксический анализатор xml не проанализирует мой html -

hello Это тест

0

Это учебник, как изменить все ссылки в HTML-документе: Scraping Links From HTML.

С незначительной модификацией, например, это может сделать это:

<?php 
require('FluentDOM/FluentDOM.php'); 
$html = '<img src="dir1/dir2/dir3/image1.jpg">'; 
$fd = FluentDOM($html, 'html')->find('//img[@src]')->each(
    function ($node) use ($url) { 
    $item = FluentDOM($node); 
    $item->attr('href', basename($item->attr('src'))); 
    } 
); 
$fd->contentType = 'xml'; 
header('Content-type: text/xml'); 
echo $fd; 
?> 
0

Если вы хотите попробовать это с регулярным выражением это может работать:

$subject = "dir1/dir2/dir3/image1.jpg"; 
$pattern = '/^.*\//'; 

$result = preg_replace($pattern, '', $subject); 
+0

Это не работает. Результат замены p> из текста

hello Это тест

+0

Это работает только с содержанием src, а не со всем HTML. Поэтому вам нужно будет извлечь содержимое в src и передать его. Посмотрите на комментарий Билли Мун, его регулярное выражение может работать так, как вы этого хотите. Но использование regexp в HTML - это плохая идея, поскольку она не всегда хорошо сформирована. – Cheesebaron

+0

Что вы предлагаете, а не регулярное выражение? –

Смежные вопросы