2010-07-09 5 views
1

J'ai une chaîne avec ce html:PHP - Remove tag <span> de chaîne

<div> 
    <span> 1 </span> 
    <a href="#"> <span> 2 </span> </a> 
    <a href="#"> <span> 3 </span> </a> 
    <a href="#"> <span> 4 </span> </a> 
    .... 
</div> 

comment puis-je supprimer les <span> balises à l'intérieur des liens (<a>)?

Répondre

-2

Il semble que vous essayez de supprimer le lien de la page en cours. Si oui, vous pouvez jeter un oeil à ce tutoriel. Cela peut être accompli de trois façons. En utilisant javascript, css ou php et css. Si oui, vous pouvez vouloir regarder son tutorial.

+0

Un lien vers un didacticiel n'est pas une réponse utile. La bonne réponse est d'utiliser strip_tags avec l'argument $ allowable_tags, comme indiqué par @Peter Gluck ci-dessous. – axlotl

1
$string = str_replace("<span>", "", $string); 
$string = str_replace("</span>", "", $string); 
4

Si vous voulez juste supprimer span balises dans une balise a et votre format est exactement ce que vous avez publié alors ce qui suit correspond à cette spécification.

$string = str_replace('<a href="#"> <span>', '<a href="#">', $string); 
$string = str_replace("</span> </a>", "</a>", $string); 

Si le format change du tout, vous pourriez avoir besoin d'une expression régulière ou utiliser DomDocument pour analyser le code HTML.

+0

Vous allez avoir des problèmes de citations. StackOverflow ne me laisse pas éditer ta réponse ... Comment fait-on ça en fait? –

+0

@nute: Je pense que vous devez avoir 2000 réputation pour éditer les choses des autres, à moins que ce soit wiki communautaire. – icktoofay

+0

@nute, merci. Je viens de copier et coller. Je dois aimer la coloration syntaxique. –

10

Voulez-vous également supprimer le contenu des balises <span>? Si c'est le cas, essayez ceci:

Sinon, la méthode str_replace que nute posté fonctionnera correctement.

+0

pas, seulement les balises '' et '', et que ceux de l'intérieur des liens – Alex

+2

never mind .. i ont réussi à résoudre ce utilisant l'expression rationnelle: 'preg_replace ('@ \ ] *)> \ ] *)> (. *?) \ <\/span> @i ',' $ 3 ', $ chaîne) ' – Alex

4

Le strip_tags() function est conçu à cet effet et vous permet de spécifier des balises HTML qui ne doivent pas être gainés:

$stripped = strip_tags($string, '<div><a>'); 

Spécification '<div><a>' comme second argument préserve les éléments <div> et ancrage.

0

Ou vous pouvez utiliser ceci:

$new_string = preg_replace('/(\<span\>|\<\/span\>)/', '', $string);