Avatar billede hobz Nybegynder
02. juli 2003 - 09:45 Der er 2 kommentarer og
1 løsning

Regular expressions i PHP

Jeg vil gerne bryde et HTML image tag ned så jeg kan replace alle values i attributes.

Hvis jeg har et img tag med følgende attributes:

<img src="img.php?19" alt="hej" width="100" height="100" border="0" vspace="5" hspace="5">

Vil jeg gerne kunne ændre det hele via preg_match og preg_replace, så jeg f.eks. kan ændre height og width.

Jeg vil også kunne se hvilke attributes der er sat, altså også kunne sætte height, width, border osv. på følgende tag:

<img src="img.php?19">
Avatar billede erikjacobsen Ekspert
02. juli 2003 - 10:07 #1
Du kan jo prøve disse 2 funktioner jeg havde liggende. Ingen garanti ... :)

function tagParams($s) {
  if (preg_match('/^ *<([a-z0-9]+)(.*)\/?> */i',$s,$r)) {
    $tag=$r[1];
    $params=$r[2];
    preg_match_all('/([a-z0-9]+)=("[^"]*"|[0-9a-z]+)/i',$params,$r);
    for ($i=0;$i<count($r[1]);$i++) {
      $par[$r[1][$i]] = preg_replace('/^"?([^"]*)"?$/','\1',$r[2][$i]);
    }
    $res["tag"]=$tag;
    $res["par"]=$par;
    return $res;
  } else {
    die("Not a valid tag");
  }
}

function makeTag($res) {
  $s = "<". $res["tag"];

  foreach ($res["par"] as $key=>$val) {
    $s .= " $key=\"$val\"";
  }

  $s .= ">";
  return $s;
}


$res=tagParams('<img src="img.php?19" alt="hej" width="100" height="100" border="0" vspace="5" hspace="5">');

$res["par"]["width"]=1000;
$res["par"]["funny"]="not funny";

print htmlentities(makeTag($res));
Avatar billede hobz Nybegynder
02. juli 2003 - 10:41 #2
Nice, takker!
Avatar billede erikjacobsen Ekspert
02. juli 2003 - 10:43 #3
Jeg kigger lige igennem og ser:
1) Ved en afsluttende .../> smides / væk
2) checked  (dvs uden =noget) ignoreres - men det er jo et billede ... :)
Og måske andet...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester