Regular expressions - alle chars?
Hej alle,Jeg sidder med open xml dokumenter (f.eks. docx) og skal trække alle overskrifter fra dokumentet.
En overskrift ser typisk sådan ud:
<w:rPr><w:rStyle w:val="Heading1Char"/></w:rPr><w:t>Thisisaheadline</w:t></w:r></w:p>
eller
<w:pPr><w:pStyle w:val="Heading1"/></w:pPr><w:r><w:t>This is the second headline</w:t></w:r></w:p>
1. Jeg har INGEN anelse hvorfor overskrifter både kan være det ene og det andet..
2. Til at trække alle overskrifter ud, har jeg skrevet følgende regular expression..
preg_match_all('/<w:(r|p)Style w:val=\"Heading1(Char|)\"\/>([a-zA-Z0-9\<\>\/\:\n\r\t\! ]*)<\/w:r>/', $xml, $result);
foreach($result[3] as $headlines) {
print $headlines."<br />";
}
Hiver alle overskrifter ud, som starter med <w:(r eller p)Style w:val="Heading1(Char eller blank)"/> frem til </w:r>
Desværre hiver den også alle <koder> med, frem til overskriften - hvordan undgår jeg det?
Men læg mærke til at jeg kun trækker bestemte symboler ud, f.eks. hvis brugeren laver en overskrift med $ eller % eller lign., så vil overskriften ikke blive trukket ud - hvordan kan jeg sørge for at det er ALLE overskrifter, lige meget hvilket symbol man bruger?
Mange spørgsmål ;) Håber nogen er frisk på at besvare.