Avatar billede multicoder Nybegynder
28. december 2007 - 14:11 Der er 12 kommentarer og
1 løsning

Find tekst via preg_replace

Hej jeg har lidt problemer med at gennemskue hvordan jeg finder følgende tekst:

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Håber i kan hjælpe.
Avatar billede barklund Nybegynder
28. december 2007 - 14:35 #1
Que? Hvor skal du finde teksten henne? :)
Avatar billede multicoder Nybegynder
28. december 2007 - 16:01 #2
:)  tja,  jeg har noget html fra Word i en variabel, som jeg skal gemme i en database, men inden det bliver gemt vil jeg gerne have fjernet lidt af det kode som kommer med fra Word.

Det kunne fx være:

<P  style="MARGIN: 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman">Tekst fra word</SPAN></P>
<P  style="MARGIN: 0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman">mere tekst fra Word</SPAN></P>
Avatar billede nielle Nybegynder
28. december 2007 - 17:48 #3
Sådan?

$tekst = '<P  style="MARGIN: 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY:

Times New Roman">Tekst fra word</SPAN></P>
<P  style="MARGIN: 0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Times New Roman">mere tekst fra Word</SPAN></P>';

$tekst = preg_replace('#<\?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />#', '', $tekst);
Avatar billede roenving Novice
28. december 2007 - 17:55 #4
Egentlig kan det slet ikke betale sig at starte med Word-genereret kode, da den notorisk er fyldt op med overflødige ting, og ovenikøbet, som vist, vælger at bruge uhensigtsmæssige måder at skrive koden på ...

-- engang for nogle år siden rensede jeg en Word-html-fil på ca. 110 kb, tilbage blev knap 8 kb html-kode, der gjorde det samme som den oprindelige kode !-)
Avatar billede barklund Nybegynder
28. december 2007 - 22:43 #5
Altså, skal du slette alle forekomster af strengen <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />, så er det da afgjort smartere at bruge str_replace :)
Avatar billede nielle Nybegynder
28. december 2007 - 23:02 #6
Alle xml-markerede tags kan slettes sådan:

$tekst = preg_replace('#<\?xml:[^>]+>#', '', $tekst);
Avatar billede nielle Nybegynder
07. januar 2008 - 18:01 #7
Er du kommet vidre med denne her?
Avatar billede multicoder Nybegynder
08. januar 2008 - 10:47 #8
Hej Nielle

Den er der næsten, dit eksempel virker fint. Men eftersom jeg har slået magic_quotes_gpc til og min tekst kommer via en Form, så ser min tekst lidt anderledes ud.

Jeg har forsøgt mig med:
$tekst = preg_replace('#<\?xml:namespace prefix = o ns = \\"urn:schemas-microsoft-com:office:office\\" />#', '', $_POST['tekst']);

Men det virker desværre ikke helt.

Hvilken funktion har # i Reg.Exp. ?
Avatar billede nielle Nybegynder
08. januar 2008 - 17:58 #9
Hvad mener du med at det ikke helt virker? Der er ikke rigtigt plads til mellemting...

#-tegnet indikere blot starten og slutningen på regexp'ens mønster. Sådan er syntaksen nu engang for preg_xxxx() funktionerne. Som regel ser man at folk bruger et /-tegn i PHP, men hvis man bruger det så skal det /-tegn der er i strengen escapes:

$tekst = preg_replace('/<\?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" \/>/', '', $_POST['tekst']);

Jeg foretrækker derfor at bruge et alternativt tegn som ikke giver problemer. Her altså #-tegnet.

PS: Det er ellers generelt tilrådet at køre uden magic quotes. Som beskyttelse mod SQL-injection er mysql_real_escape_string() at foretrække.
Avatar billede nielle Nybegynder
14. januar 2008 - 18:50 #10
Har du fået kigget på det?
Avatar billede nielle Nybegynder
21. januar 2008 - 18:23 #11
Hvad med noget respons?
Avatar billede multicoder Nybegynder
21. januar 2008 - 22:12 #12
Hej igen.

Jeg har haft lidt travlt her på det sidste. Men jeg har fået det til at virke, du må meget gerne smide et svar.  Jeg skal vist også have set lidt på det der med mysql_real_escape_string, det var jeg ikke klar over.

Tak for hjælpen.
Avatar billede nielle Nybegynder
22. januar 2008 - 18:16 #13
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
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