5568 sujets

Sémantique web et HTML

En php, peut-être un truc dans ce goût-là :

$chaine = preg_replace_callback('#http://[^ ]{26,}#', create_function('$match',' return substr($match[0], 0, 26)."...".substr($match[0], -3);'), $chaine);

Code écrit en live et donc non testé.
Bonjour Quentin...

Merci beaucoup pour cette réponse. Par contre, je ne sais pas comment l'intégrer dans mon fichier, est-ce que tu peux m'aider de ce côté là aussi, pour que je teste ?

Merci...
En fait, j'ai un blog qui fonctionne sous dotclear, et j'ai créé un certain nombre de boîtes avec du contenu à l'intérieur. Jusque là, pas de problèmes.

Il y a ensuite une fonction de dotclear qui permet de lister les sites référants et de les inscrire dans un fichier, puis une autre fonction qui permet de les afficher.

Mon pb, c'est que lorsque l'adresse d'un site dépasse les 26 caractères, elle dépasse de la boîte et fait sauter la mise en page. Plutôt gênant...

Je cherche donc à modifier la fonction qui enregistre les référants pour qu'elle raccourcisse automatiquement les adresses trop longues.

Voici l'extrait du fichier contenant la fonction d'enregistrement :

function recordReferers() {
		$referants = dirname(__FILE__) . '/reffichier.html';
		$blacklist = dirname(__FILE__) . '/refblacklist.html';

		if ( isset($_SERVER['HTTP_REFERER'])
				&& ($_SERVER['HTTP_REFERER'] != '')
				&& ($_SERVER['HTTP_REFERER'] != 'bookmarks') )
		{
			$ref_court = preg_replace("/(http|https|ftp|news):\/\//","", $_SERVER['HTTP_REFERER']);
			$ref_court = preg_replace("/\/.*/", "", $ref_court);

			if ( ($ref_court != $_SERVER['SERVER_NAME'])
					&& ($ref_court != 'bookmarks') && is_writable($referants) )
			{

				$ref_long = preg_replace("/&/", "&", $_SERVER['HTTP_REFERER']);

				$reffichier = fopen($referants,'a');
				fwrite($reffichier, "<a href=\"" . htmlentities($ref_long, ENT_NOQUOTES) . "\" rel=\"nofollow\">$ref_court</a><br/>\n");
				fclose($reffichier);
			}
		}

	}

J'ai essayé d'insérer le code que tu avais donné dans cette fonction, en remplacant "chaine" par "ref_court", mais ça n'a pas marché, il doit y avoir autre chose à modifier. Est-ce que tu as une idée ?

Merci encore pour ton aide,

Eric
Est-ce que par le plus grand des hasards, tu arrives à repérer les variables que je ne connais pas ?

Je pense que ce que tu as appelé "chaine" dans ton code correspond à ce qu'ils ont appelé "ref_court", par contre je ne comprends pas bien ce que tu as appelé "match". Est-ce que tu peux essayer de m'expliquer que je vois comment faire ?