8791 sujets

Développement web côté serveur, CMS

J'ai cherché mais je n'ai pas trouvé de résultat concluant.

Je cherche à mettre une lettre selon la lettre suivante.
Par exemple :
- Si mon mot est "Automne", j'aimerai grâce à ma fonction mettre juste avant "L'Automne"
- Si mon mot est "Londres", j'aimerai grâce à ma fonction mettre "de Londres"

J'espère avoir était clair et avoir un réponse très rapidement Smiley lol

Merci d'avance Smiley smile
Hello DjaSama

Non pas très clair : nous ignorons le contexte.

Ta question est un peu difficile à comprendre et nous n'avons pas toutes les informations nécessaire à la compréhension de tes intérêts.

- insertion d'une séquence de caractère devant un mot : provenant d'un texte ?
- insertion d'une séquence de caractère devant un mot : issus d'un array ?

Nous ne savons pas ! mais je prend le risque.

Voici quand même ma contribution : avec un array.


<?php
function concatenation ($matrice, $chaine, $index)
{
    $br = '<br>';
    if (is_array($matrice))
    {
      echo $chaine.$matrice[$index] . $br;
    }
}
# --- On appelle la fonction --- #
$mat = array('automne', 'Londres', '5.3.0', 'concatenation ( )');
# -- automne : L'automne -- #
concatenation ($mat, 'L\'', 0);
# -- Londres : De Londres -- #
concatenation ($mat, 'de ', 1);
# -- 5.3.0 : PHP 5.3.0 -- #
concatenation ($mat, 'PHP ', 2);
# -- concatenation : function concatenation ( ) -- #
concatenation ($mat, 'function ', 3);
?>

Résultats ici

L'automne
de Londres
PHP 5.3.0
function concatenation ( )

J'ai sûrement passez à côté de tes intérêts réels mais si tu veux bien, donne nous plus d'information sur tes intentions. La manière de faire le script ou de te proposer des liens d'accès vers des scripts ou des tutoriels peut être très différent, selon le contexte.

Si il s'agit d'un texte qui contient plusieurs fois le même mot, il est préférable d'écrire un script qui ciblera n'importe quel mot en donnant sa position exacte. Dans le code suivant les résultats sont en données brute. Ces données n'ont de prétention que d'informer.

<?php 
function motPosition($chaine, $cible, $decalage = 0){ 
    $resultat = array(); 
    for($i = $decalage; $i < strlen($chaine); $i++){ 
        $position = strpos($chaine, $cible, $i); 
        if($position !== false){ 
            $decalage =  $position; 
            if($decalage >= $i){ 
                $i = $decalage; 
                $resultat[] = $decalage; 
            } 
        } 
    } 
    return $resultat; 
} 
# --
$chaine = utf8_decode('automne 2009 ou automne 2010, le vent passera et les pluies aussi.'); 
$automne = 'automne';
# --
echo '<xmp>';
print_r(motPosition($chaine, $automne));
# -- Maintenant que l'on a motPosition() sans le 3ième param
# -- nous pouvons cibler avec le 3ième paramètre
print_r(motPosition($chaine, $automne, 16));
?> 

Résultat ici

Array
(
    [0] => 0
    [1] => 16
)
Array
(
    [0] => 16
)

Je ne crois pas avoir répondu à ta question. Mais j'ai voulu apporter une contribution sur des questions que je me posais à propos de tes intérêts. Le 2ième script a l'avantage de rendre la position exacte des mots que l'on cherche sous forme de array, même si ce mot apparait plusieurs fois dans le texte. Tu pourras déplacer la position du pointeur en utlisant le troisème param dont la valeur par défaut est : 0.

Ce script empêche de compter manuellement la position d'un mot dans la chaine.

++
Modifié par zardoz (01 Oct 2010 - 07:31)