Problème avec une chaine de caractère

Eléphant du PHP | 164 Messages

29 août 2013, 01:51

Bonjour,

J'ai un petit soucis avec une chaine de caractère.
Je veux faire un script qui afficherait un lien vers une galerie ...

Pour cela je veux qu'on mettant le texte [GALERIE-5], que la fonction me ressortent "5".

Je galère avec toutes les fonctions de chaines ... quelqu'un a une idée pour m'aider ?
Merci d'avance.

ViPHP
xTG
ViPHP | 7331 Messages

29 août 2013, 08:16

Regardes du côté de la fonction sscanf, c'est le moyen le plus aisé pour sortir des informations d'une chaîne dont tu connais le format. ;)

Eléphant du PHP | 164 Messages

29 août 2013, 23:34

Alors oui c'est une bonne piste, mais mon [GALERIE-XX] se trouve dans une grande chaine de caractère. Je ne veux repérer QUE cette balise, et une fois repérée pouvoir récupérer le nombre décimal qu'elle contient.

Mammouth du PHP | 2278 Messages

30 août 2013, 08:45

Bonjour,
Est-ce que:
[GALERIE-XX]
les [] existent dans la chaîne :
oui : sont uniques?
non:
est-ce que GALERIE est unique dans la chaîne?
oui : solution assez simple
non: comment trouver la bonne expressions? (contextte....)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Pitet
Invité n'ayant pas de compte PHPfrance

30 août 2013, 15:01

Salut,

Voici un exemple de solution :
<?php 

$chaine = 'ksqdj qskdjh qsjkdh qsjd [GALERIE-5] qskjh qkjhqs kdjqsh kdqsu qksjd [GALERIE-19] qskgh qskjdhqs kdjqhs kjdqs';

$mesGalleries = array();

$findGallery = TRUE;
$start = 0;

while ($findGallery) {

	// position du début du tag [GALERIE-<num>]
	$posStartTag = strpos($chaine, '[GALERIE-', $start);

	if ($posStartTag !== FALSE) {		
		// position de la fermerture du tag ]
		$posEndTag = strpos($chaine, ']', $posStartTag);
		// taille de <num>
		$lenghtToPosEndTag = $posEndTag - $posStartTag;
		// numéro de la galerie
		$galleryNum = substr($chaine, $posStartTag + 9, $lenghtToPosEndTag - 9);
		
		$mesGalleries[] = $galleryNum;
		
		// on place le curseur pour rechercher la prochaine galerie
		$start = $posEndTag;
	} else {
		$findGallery = FALSE;
	}

}

var_dump($mesGalleries);

?>

Bonne journée

Mammouth du PHP | 2278 Messages

04 sept. 2013, 20:35

Rien d'étonnant :
elle a du caractère; si elle avait des caractères ça irait mieux et sans souci ou sans soucis.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD