1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda com preg_replace

Discussão em 'Web Development' iniciada por s31s3r, 10 de Janeiro de 2008. (Respostas: 5; Visualizações: 1472)

  1. s31s3r

    s31s3r Power Member

    Este código:
    PHP:
    $string preg_replace('([&]+[a-zA-Z0-9]+[;]+)''_'$string);
    Substitui qualquer string que comece com "&" e acabe em ";" e no meio delas contenha letras ou números.
    Falta-me apenas limitar a quantidade de letras ou números que pode haver.
    Por exemplo defenia para aplicar a regra caso encontra-se entre 6 a 8 números ou letras.
    Para "&fghsdef;" a regra aplicava-se mas para "&fg;" já não.
    Não estou a conseguir fazer isto.
    Já tentei
    PHP:
    $string preg_replace('([&]+[a-zA-Z0-9]{4-8}+[;]+)''_'$string);
    Mas não resulta...
     
  2. fil79

    fil79 Power Member

    não sei se percebi bem mas acho que podes fazer isso usando um if:

    if o último caracter da string fòr x e o primeiro Y {

    acções

    }


    para isso usa a função substr
     
  3. s31s3r

    s31s3r Power Member

    Sim, mas eu queria evitar isso. só queria usar tudo com o preg_replace()
     
  4. spastikman

    spastikman Banido




    PHP:

    <?php

    $var 
    "&ssfkddf;";

    echo 
    preg_replace('/^&(\w|\d){4,8};/''X'$var) . "\n";

    $var1"&ala;";

    echo 
    preg_replace('/^&(\w|\d){4,8};/''X'$var1) . "\n";

    $var2"&a5s4l1;";

    echo 
    preg_replace('/^&(\w|\d){4,8};/''X'$var2) . "\n";



    ?>
    outputs :

     
  5. s31s3r

    s31s3r Power Member

    Acho que não me expliquei bem:

    O que eu quero é transformar a string

    "hgfjhgffjh&jhgg;hgs&gh;ghfh&jhggfhrg;"

    em

    "hgfjhgffjh_hgs&gh;ghfh_"

    mas só no caso de haver um certo número de caracteres na expressão pretentida que é
    "&[entre 4 a 8 letras ou dígitos]";

    Falando na língua humana é:
    Encontra 4 a 8 letras ou dígitos entre os caracteres "&" e ";", respectivamente e substitui a expressão por "_"

    Desculpem o post em duplicado mas era só para dizer que os resultados que postastes estão completamente diferentes do que tenho aqui... Nem sei como te dá isso:wow:
     
    Última edição pelo moderador: 10 de Janeiro de 2008
  6. s31s3r

    s31s3r Power Member

    Era só uma questão de ponto de vista:-D
    PHP:
    preg_replace('/([&]+[#a-zA-Z0-5]{1,6}+[;])/''_'$string);
    pode ser que sirva para alguém
     

Partilhar esta Página