8791 sujets

Développement web côté serveur, CMS

Hi,

J'ai besoin de matcher des balises img qui n'ont pas d'attribut alt, ce, afin de leur rajouter.

J'ai tenté la regexp suivante :

$content = preg_replace(
				'/<img(.*?)[^alt=](.*?)\/>/',
				'<img $1 $2 alt="image" />',
				$content
			);


Sauf que ça ajoute le alt à toute les images, même celles qui en ont déjà un. Je suis pas très doué en reg exp et j'apprécie fortement votre aide Smiley cligne

Merci Smiley smile
Bon je suis pas trop sur de moi,
mais essaye

$content = preg_replace(

				'/<img ([^<]*)alt=(.*?)\/>/NOT',

				'<img $1 $2 alt="image" />',

				$content

			);

Cette expression cherche toutes les images avec un alt, avec le NOT en option ça se tente ^^
Zut, j'y ai cru Smiley decu

<b>Warning</b>: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Unknown modifier 'N'
Bonjour

Je tenterais une assertion arrière négative, mais dans cet exemple je ne peux que récupérer les attributs entre img et alt :

$content = preg_replace('`<img ([^>]*)(?<!alt\=)`','<img $1 alt="image" />',$content)');
Administrateur
Bonjour,

Mobman02>
L'inverse d'une image avec alt, ce n'est pas une image sans alt, c'est n'importe quoi sauf "une image avec alt" (<html>, etc) Smiley cligne
Modifié par Felipe (06 Aug 2007 - 14:36)
@Mobman02>

Quoiqu'il en soit une option NOT ça n'existe pas en PHP, une option est forcément composée d'une seule lettre. Lorsqu'on met 3 lettres, ça veut dire qu'il y a 3 options.
Bon finalement je m'y suis pris totalement autrement. J'ai tout découpé :

// On chope les images
				if (preg_match_all(
						'/<img.*?>/si',
						$content,
						$m
					))
				{
					foreach ($m as $img)
					{
						// On cherche les alt
						$newImg = strval($img[0]);
						// S'il manque le alt
						if (!preg_match(
								'/alt=["\'].*?["\']/',
								$newImg
							))
						{
							// on l'ajoute
							$newImg = preg_replace(
								'/^(.*?)(\/{0,1}>)$/si',
								'$1 alt="image" $2',
								$newImg
							);
						}
						
						// S'il manque le height
						if (!preg_match(
								'/height=("|\'|\s){1,}.*?("|\'|\s){1,}/si',
								$newImg
							))
						{
							// On l'ajoute
							$newImg = preg_replace(
								'/^(.*?)(\/{0,1}>)$/si',
								'$1 height="100" $2',
								$newImg
							);
						}
						
						// Si le src est en relatif
						if (!preg_match(
								'/src=("|\'|\s){1,}http.*?("|\'|\s){1,}/si',
								$newImg
							))
						{
							// On l'ajoute
							$newImg = preg_replace(
								'/^(.*?src="|\'|\s{1,})(.*?)("|\'|\s{1,}\/{0,1}>)$/si',
								'$1' . $root . '$2$3',
								$newImg
							);
						}
						// Puis on ajoute l'image au content
						$content = str_replace(
							strval($img[0]),
							$newImg,
							$content
						);
					}
				}

C'est beaucoup plus long mais ça a le mérite de marcher Smiley langue
Arsene a écrit :
...et puis tant qu'à faire, un alt="" sera aussi bien qu'un alt="image" Smiley lol

Bof… Je vais voir ce que je peux mettre comme mot clefs à la place de "image". Vous pensez que mettre des mots clefs aléatoire en rapport avec le contenu de la page pourrait améliorer le référencement de la page ? Sinon, je peux toujours mettre le domaine en regardant l'url source…
Smiley biggrin
Hadrien.eu a écrit :
Vous pensez que mettre des mots clefs aléatoire en rapport avec le contenu de la page pourrait améliorer le référencement de la page


alt signifie alternative à l'image (lorsqu'elle n'est pas restituée telle quelle) et pas alternative à une stratégie de référencement Smiley lol Y'a eu une longue discussion sur le sujet il y a deux mois : A propos d'accessibilité et d'images
Arsene a écrit :
Smiley biggrin

alt signifie alternative à l'image (lorsqu'elle n'est pas restituée telle quelle) et pas alternative à une stratégie de référencement Smiley lol Y'a eu une longue discussion sur le sujet il y a deux mois : A propos d'accessibilité et d'images

Google le sait pas ça Smiley langue Vaut mieux un mot clef de ref que pas de alt du tout non ? Smiley cligne
Hadrien.eu a écrit :
Google le sait pas ça Smiley langue Vaut mieux un mot clef de ref que pas de alt du tout non ? Smiley cligne

Ce n'est pas le genre de façon de voir les choses qui va t'aider à gagner le CSSR. Smiley rolleyes
Julien Royer a écrit :

Ce n'est pas le genre de façon de voir les choses qui va t'aider à gagner le CSSR. Smiley rolleyes

Ah non là ça a rien à voir… Non mais vu que tu insistes, je vais t'expliquer. Sur le site en question, j'affiche les flux de mes deux blogs. Lesquels ont des images mais pas forcément de alt. Ce qui nique la validité de ma page. D'où les ajouts de ceux-ci. Personnellement, mettre un alt vide, je trouve ça stupide. C'est vraiment dans le seul but de passer le validateur. Aucun interêt. Je préfère encore mettre "image" ou encore "image tiré du flux nomDuFlux". Ça donne une alternative légèrement plus utile que "". Bon, après, vu que ces informations ne sont franchement pas très utile sur mon site, peu importe les mot clefs qu'il y a dans les alt.

Ça va, je me suis bien défendu ? Smiley langue