Avatar billede fizk Nybegynder
02. august 2006 - 14:34 Der er 6 kommentarer og
1 løsning

Lidt reg. exp.

Hej ... Jeg sidder og bikser med lidt reg. exp. og tror da også jeg efterhånden har forstået det meste. Dog er der stadig lidt jeg bøvler med.

$linje = preg_replace('/<center><b>(\S*|\s*)<\/b><\/center>/', '$1', $linje);

Burde den ikke tage alt mellem <center><b> og </center></b> og så lægge det over i $1? Tydeligvis ikke, da den ikke gør det (duh), men er der så nogen der kan give en hurtig forklaring på hvordan det nu skal gøres, når jeg ikke ved om det er tal, bogstaver, eller tomme felter og hvor mange der er?
Avatar billede gizmo-gizmo Nybegynder
02. august 2006 - 14:43 #1
Kun hvis der er mellemrum mellem <center><b> og </b></center>

\s*  betyder "space" 0 eller flere gange, hvorefter </b> kommer. Prøv i stedet med:

$linje = preg_replace('/<center><b>[^<]*<\/b><\/center>/', '$1', $linje);
Avatar billede gizmo-gizmo Nybegynder
02. august 2006 - 14:45 #2
ups... [^<]*  skulle selvfølgelig lige ind i en parentes så den kan fange $1
Avatar billede gizmo-gizmo Nybegynder
02. august 2006 - 14:50 #3
ej... det her vil være mest optimalt:

$linje = preg_replace('/<center><b>(.*?)<\/b><\/center>/', '$1', $linje);

Så går den heller ikke fejl af  "<center><b> test <> test </b></center>"
Avatar billede jakobdo Ekspert
02. august 2006 - 14:53 #4
\s = whitespaces! (mellemrum, tabs, newlines, carriage return)
\S = alle tegn som ikke er whitespaes!
Avatar billede gizmo-gizmo Nybegynder
02. august 2006 - 14:56 #5
Ja og så virker fizk løsning ikke hvis man kombinere whitespaces og ikke-whitespaces.
Avatar billede plx Nybegynder
02. august 2006 - 15:27 #6
Hvis der kan være linjeskift, skal der en modifier på

$linje = preg_replace('/<center><b>(.*?)<\/b><\/center>/s', '$1', $linje);

fra manualen:

s (PCRE_DOTALL)
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.
Avatar billede fizk Nybegynder
02. august 2006 - 17:47 #7
Ha ha, hvor spøjst, jeg sad faktisk lige og prøvede på at lave en med linjeskift =D
Gizmo-Gizmo, du får point ^^
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