Avatar billede da_kbaz Nybegynder
24. maj 2005 - 18:04 Der er 6 kommentarer

reg. exp.

Hej,

Jeg har et script der henter indholdet af en html-fil ind i en variabel.
Jeg vil så efterfølgende trække alle episodenavnene ud, og smide dem i et array. Det er så her det kniber lidt med mine reg. expressions skills ;-)

Eksempel på noget af en linie:

[..] MM_openBrWindow('flash/play.asp?episode=flaky','','resizable=yes,width=740,height [..]
Avatar billede da_kbaz Nybegynder
24. maj 2005 - 18:06 #1
Det gik lidt stærkt... Det jeg vil extracte fra ovenstående linie, er så navnet "flaky".
Der er mange episoder på én side, så det skal kunne returneres i et array. Hvilken funktion skal jeg bruge, og hvordan sakl min expression se ud?
Avatar billede angam Nybegynder
24. maj 2005 - 18:40 #2
Prøv denne:
$arr = preg_split("/flash\/play\.asp\?episode=(.*?)\'/", $string, null, PREG_SPLIT_DELIM_CAPTURE);
$names = array();
foreach($arr as $index => $name)
    if($index & 1)
        $names[] = $name;

die(var_export($names));


.. die vil returnere et array af navne, f.eks.:

$string = "MM_openBrWindow('flash/play.asp?episode=flaky','','resizable=yes,width=740,height [..]  MM_openBrWindow('flash/play.asp?episode=testing','','resizable=yes,width=740,height [..]";

giver

array ( 0 => 'flaky', 1 => 'testing', )
Avatar billede angam Nybegynder
24. maj 2005 - 18:45 #3
Du får lige et komplet kode-eksempel og en forklaring - hvis du har brug for at modificere det:

<?
$string = "MM_openBrWindow('flash/play.asp?episode=flaky','','resizable=yes,width=740,height [..]  MM_openBrWindow('flash/play.asp?episode=testing','','resizable=yes,width=740,height [..]";

$arr = preg_split("/flash\/play\.asp\?episode=(.*?)\'/", $string, null, PREG_SPLIT_DELIM_CAPTURE);
$names = array();
foreach($arr as $index => $name)
    if($index & 1)
        $names[] = $name;

die(var_export($names));
?>

$string bruger jeg som input, og indeholder hele den tekst jeg skal splitte.
Herefter bruger jeg preg_split() til at splitte strengen op efter alle steder der indeholder flash/play.asp?episode=[something], og beder preg_split om at gemme adskilleren i resultatsættet (PREG_SPLIT_DELIM_CAPTURE).

Outputtet er et array af skiftevis delimiters og navne, f.eks.:
array (
  0 => 'MM_openBrWindow(\'',
  1 => 'flaky',
  2 => ',\'\',\'resizable=yes,width=740,height [..]  MM_openBrWindow(\'',
  3 => 'testing',
  4 => ',\'\',\'resizable=yes,width=740,height [..]',
)

Det betyder at vi skal fiske hver anden linie ud af array'et - det gør jeg med foreach-løkken bagefter - $index & 1 er trur når index er 1,3,5,7... - dvs. hver 2. gang, og resultatet er et array $names der indeholder navnet på alle ordene/titlerne.
Avatar billede da_kbaz Nybegynder
24. maj 2005 - 19:05 #4
Genialt! Intet mindre ;-)

Jeg takker mange gange for hjælpen, og den uddybende forklaring :-)
Avatar billede da_kbaz Nybegynder
24. maj 2005 - 19:06 #5
Hov, smid et svar!
Avatar billede angam Nybegynder
24. maj 2005 - 19:07 #6
Svar :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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