Une idée serait, à mon avis, de rechercher la
dernière occurence du caractère "<" dans ta
chaîne.
Ici, ce serait le "<" du "<strong>" (caractère 58) de :
Code :
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. <strong>Cras nisl
|
Bon, donc tu sais que le dernier "<", c'est le 58.
Tu regardes le caractère 59.
Oh ! C'est un "s" !!! Ce n'est donc pas un "\"...
La balise n'est donc pas fermée.
Du coup, tu cherches le caractère ">" qui suit le
58e. Ici, c'est le 65e (à la fin du "<strong>" ).
Tu copies cette chaîne (du 58 au 65) à la fin
de ta chaîne en ajoutant un "\"...
Bon, je connais pas trop le PHP, mais le code
ressemblerait à ça en VB (à toi de transposer ! :-D)
Code :
- ch = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. <strong>Cras nisl"
- <!-- On cherche le dernier "<" -->
- For i = Len(ch) To 1 Step -1
- If Mid(Ch, i, 1) = "<" then
- PosDeb = i
- Exit For
- End If
- Next i
- <!-- Si le caractère suivant est un "/", c'est bon, on arrête -->
- If Mid(Ch, PosDeb + 1, 1) = "/" Then End
- <!-- Sinon, on cherche le ">" qui suit -->
- For i = PosDeb To Len(Ch)
- If Mid(Ch, i, 1) = ">" Then
- PosFin = i
- Exit For
- End if
- Next i
- <!-- On récupère le texte (ici Strong) -->
- Texte = Mid(Ch, PosDeb + 1, PosFin - PosDeb)
- <!-- On rajoute la balise de fermeture -->
- Ch = Ch + "<\" + Texte + ">"
|
Voilà, voilà !!! J'espère que ça va t'aider !
Alors là, le problème de cette méthode, c'est qu'elle
ne marche pas dans trois cas :
1. <balise1><balise2>Mon texte</balise1>
2. <balise1><balise2>Mon texte
3. <balise1>Mon texte</ba
Message édité par Profil supprimé le 27-05-2007 à 13:28:26