2011-08-08 2 views
0

J'ai une application PHP qui lit dans un peu de HTML. Dans ce code HTML, il peut y avoir une balise img. Ce que je veux faire est de dépouiller la structure de répertoire du src de l'étiquette d'image par exemple.Structure de répertoire de bande en HTML

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

N'importe qui a des pointeurs?

Merci, Mark

+0

regex est pas bon analyseur html - mais Si vous êtes déterminé à l'utiliser, vous pouvez l'utiliser (en supposant que votre balise img est bien formatée et utilise des guillemets doubles): 'preg_replace ("/src = \ ". + \/(. +) \"/", '" $ 1 "', $ chaîne)' –

Répondre

0

Comme suggestion, plutôt que d'utiliser regex, vous pouvez être mieux d'utiliser quelque chose comme la classe SimpleXML pour traverser le HTML, de cette façon que vous seriez en mesure de trouver les balises img et leur attribut src le change ensuite facilement. Plutôt que d'avoir à essayer d'analyser un document entier avec regex. Après avoir fait cela, vous pourriez juste exploser la chaîne en utilisant le délimiteur "/" et utiliser la dernière valeur du tableau éclaté comme attribut src.

SimpleXML Manuel de PHP.net: http://php.net/manual/en/book.simplexml.php

+0

essayé ceci mais l'analyseur xml ne va pas analyser mon html -

bonjour Ceci est un test

0

Ceci est un tutoriel comment changer tous les liens dans un document HTML: Scraping Links From HTML.

Avec une légère modification de l'exemple, cela pourrait le faire:

<?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

Si vous voulez essayer cela avec regexp cela pourrait fonctionner:

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

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

Cela ne semble pas fonctionner - Le résultat du remplacement est p> du texte

bonjour Ceci est un test

+0

Cela fonctionne uniquement avec le contenu de src pas tout le HTML. Donc vous devrez extraire le contenu dans src et le transmettre. Regardez le commentaire de Billy Moon, son expression rationnelle pourrait fonctionner comme vous le souhaitez. Mais utiliser regexp sur HTML est une mauvaise idée car elle n'est pas toujours bien formée. – Cheesebaron

+0

Que suggérez-vous plutôt que regexp? –