[PHP] Expréssion regulière

Résolu/Fermé
coccoweb Messages postés 141 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 17 février 2015 - 11 juil. 2010 à 17:52
coccoweb Messages postés 141 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 17 février 2015 - 12 juil. 2010 à 21:43
Bonjour,
Je cherche une solution pour extraire de mon url des informations
J'indique ici les information que je souhaite récupérer en gras.
La partie souligné correspond a une information inutile au script.

La partie en gras change continuellement

Voici une url :
http://mon-super-site.fr/forum-aero-debutant-13.htm

<?php

function test($chaine){
$chaine=str_replace($_SERVER['HTTP_HOST'].'/','', $chaine);
$chaine=str_replace('/','', $chaine); 
$chaine=str_replace('.htm','', $chaine); 

/* A partir d'ici il reste   forum-aero-debutant-13

return $chaine;
}
$chaine = $_SERVER['REQUEST_URI'];
echo test($chaine);

?>


A voir également:

4 réponses

le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
11 juil. 2010 à 18:17
ode('-',$chiane) te renvoie un tableau avec comme valeur array(forum,aero,debutant,13)
0
coccoweb Messages postés 141 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 17 février 2015 27
11 juil. 2010 à 18:24
et pour récupérer forum seul et le numérique qui peut se prolonger comme suit 13-1-15879 ?

En réalité forum reste toujours un mot unique qui pourrai s'appeler topic ou encore article
aero-debutant est lui change constamment et le numérique lui peut prendre une ampleurs comme 13-1-15879
0
mkl37 Messages postés 8 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 19 juillet 2010 3
12 juil. 2010 à 08:24
Pour récupérér le "forum" ou "topic" ou autre, du moment qu'il appart en premier dans ta chaîne de caractères, alors tu peux le récupérer facilement car il est contenu dans $chaine[0] c'est à dire dans le premier enregistrement du tableau retourné par la fonction explode('-', $chaine).

Pour le numérique tu peux toujours faire une recherche avec la fonction is_numeric sur chacune des entrées du tableau $chaine

Cordialement,
0
coccoweb Messages postés 141 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 17 février 2015 27
12 juil. 2010 à 21:43
Voilà bas un grand merci a tout ceux qui mon aidé

Juste parce que je suis reglo et que la fonction créé est utile a tous la voila :


Cette fonction génère la description de chaque page.


<?php
// exploser la chaine et un tableau (array)
function exploserChaine( $chaine )
{
	/*
	Explose une chaîne de caractère suivant pour en faire un tableau de mots clés
	*/
	$to = '-';
	$from = ' ';
	$chaine = strtr( $chaine, $to, $from ); // On remplace les caractères $to par des espaces
	$tabTemp = explode( ' ', $chaine ); // On explose la chaîne dans un tableau temporaire suivant le délimiteur espace
	foreach( $tabTemp as $k => $v )
	{
		if( $v != NULL ) // Pour éviter d'avoir des entrées vides
		{
			if( preg_match( '#(.*){1}(\')#', $v, $matches ) ) // On cherche un caractère suivi d'une apostrophe ( pour les mots du genre : d'autres )
			{
				$v = substr( $v, 2 ); // Si trouvé on élimine le caractère et l'apostrophe
			}
			$tabChaine[] = $v; // On ajoute le mot au tableau final
		}
	}
	return $tabChaine;
}


function meta_description($chaine)
{
// ici on nettoie pour récupérer se qui nous intéresse. 
$chaine=str_replace('http:','', $_SERVER['REQUEST_URI']); 
$chaine=str_replace($_SERVER['HTTP_HOST'],'', $chaine);
$chaine=str_replace('/','', $chaine); 
$chaine=str_replace('.htm','', $chaine);

/* A partir d'ici il reste   forum-aero-debutant-13
On explose la chaine histoire de tout mettre dans un tableau
*/
$chaine=exploserChaine($chaine);

// Cette partie va créé un autre tableau uniquement numérique
$c=0;
foreach ($chaine as $element)
{
	if (is_numeric($element))
	{
		$id_post[$c]=$element;
		$c++;
	}
}

// Cette partie concerne le site
switch($chaine[0])
{
// La page fais partie du forum
case "forum":
	if (isSet($id_post))
	{
// Si $id_post existe c'est que la page contient une valeur numérique

	$req = mysql_query("SELECT forum_name, forum_desc 
	FROM  'OS_forum_forum' 
	WHERE  'forum_id' =".$id_post[0]."
	LIMIT 0 , 1");
	$data=mysql_fetch_assoc($req);

// Cette astuce si permet de supprimer le BBcode appelé chez moi xCode
	$desc = preg_replace('#\[(.*)\](.*)\[(.*)\]#U', '$2', $data['forum_desc']);
// Maintenant il est utile de supprimer les espaces inutile.
	$chaine = trim("Forum : ".$data['forum_name']." ".$desc);
// La description meta contient max. 200 caractères. On coupe se qui depasse
	if (strlen($chaine) > 200)
	{
	$chaine = substr($chaine, 0, 200);
	$last_space = strrpos($chaine, " ");
	$chaine = substr($chaine, 0, $last_space)."...";
	}
	return $chaine;
	}
	else
	{ // Si id_post n'existe pas, c'est que nous somme dans l'index du forum
	return "Forum dédié à l'aeromodelimse, l'entraide d'utilisateur d'hélicopter radio commandé (RC).";
	}
break;
case "topic":
// Idem pour les topics, grace aux jointure mySQL
	$req = mysql_query("SELECT  'topic_titre' ,  'post_texte' 
	FROM  'OS_forum_topic' 
	LEFT JOIN  'OS_forum_post' ON  'OS_forum_post'.'post_id' =  'OS_forum_topic'.'topic_first_post' 
	WHERE  'OS_forum_topic'.'topic_id' =".$id_post[0]."
	LIMIT 0 , 1");
	$data = mysql_fetch_assoc($req);
	$post = preg_replace('#\[(.*)\](.*)\[(.*)\]#U', '$2', $data['post_texte']);
	$chaine = trim("Portail : ".$data['topic_titre']." ".trim($post));
	if (strlen($chaine) > 200)
	{
	$chaine = substr($chaine, 0, 200);
	$last_space = strrpos($chaine, " ");
	$chaine = substr($chaine, 0, $last_space)."...";
	}
	return $chaine;
break;
/* C'est super tout ca, mais les pages statiques ?
Et bien on les identifie par la valeur du tableau
*/
case "inscription":
	return "Page d'inscription au Club d'aéromodélisme de Charleroi, région Dampremy. Entraide des modélistes. Participer au forum et discuter avec d'autres amateurs et profésionnels.";
break;
case "connection":
	return "Page de connection au Club d'aéromodélisme de Charleroi, région Dampremy. Connectez-vous au monde du modélisme.";
break;
case "a_propos_de_RC_Charleroi_Dampremy_aero_modelisme":
	return "A propos du Club d'aéromodélisme de Charleroi, région Dampremy. Tout se qu'il est bon de savoir sur nos motivations. Sortez donc de chez vous et venez nous rejoindre.";
break;

/* En cas d'oublie, la roue de secours est aussi utile et hop une entre par defaut */
default:
	return "Club d'aéromodélisme de Charleroi, région Dampremy. Libre d'accès pour tous. Possibilité de vol intérieurs, organisation privé";
break;
}

}
?>


Voilà une bonne prise de tête et les résultats.

Encore merci.
0