regex
  • preg-replace
  • html-parsing
  • 2011-02-25 4 views 0 likes 
    0

    je supprimer le contenu entre ces blocs html:php preg_replace contenu html

    $var1 =" 
    
        <html><head> 
        <meta http-equiv='content-type' content='text/html; charset=ISO-8859-1'></head><body> 
        <img alt='shopozilla' src='http://www.ssopte.com/images/2010/usdos-logo-seal.png' > 
    
        <span style='font-family: Arial,Helvetica,sans-serif; color: rgb(93, 93, 93); 
        font-size: 17px; font-weight: bold;'>shopozilla sent this message to 
    "; 
    
    $var2 = " 
    
        Section 222 of the sand sAct. Section 222(f) provides that the  records of the separtment of State and of diplomatic and consular </font><br> 
        </td></tr></tbody></table></td></tr></tbody></table></body></html> 
    
    "; 
    

    Jusqu'à présent, j'essayé

    <pre> 
    $content = preg_replace("/$var1(.*)$var2/m", "", $htmlContent); 
    </pre> 
    

    mais ne fonctionne pas donc je besoin d'un modèle/regex qui devrait fonctionner .

    +0

    Voir: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags –

    Répondre

    0

    Votre motif contient beaucoup de caractères qui ont des significations spéciales dans regex, donc il est déroutant preg_replace sur ce qu'il faut chercher. Utilisez plutôt str_replace, car vous n'avez vraiment pas besoin de regex pour cela. PHP ont pas fait dans un certain temps, mais essayez:

    $pos1 = stripos($htmlcontent, $var1); 
    $pos2 = strripos($htmlcontent, $var2); 
    
    $content = substr_replace($htmlcontent, "", $pos1, $pos2 + strlen($var2)); 
    

    Et il y a one point that cannot be emphasized enough.

    0

    Essayez de supprimer le motif en dehors de la copie.

    $pattern = "/$var1(.*)$var22/m"; //adding /s might help with the /m 
    

    de cette façon, vous pouvez echo $ pattern; et vérifiez si c'est valide.

    Questions connexes