[PHP] Hoe dit teken te vervangen..?

Pagina: 1
Acties:
  • 187 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
Beste GoTters,

Ik heb een probleem.
Ik ga via een PHP script een CSV bestand inlezen. Afijn werkt ok.
Hij werkt via een loop alle bestanden door.
Alleen in het XLS betand staat een teken wat eigenlijk geen teken is.
Als ik hem kopieer en plak zie ik niks. (hij pakt een enter)
Het teken is als volgt:


Afbeeldingslocatie: http://img117.imageshack.us/img117/9623/naamloos5xh.jpg

Een voorbeeld waarin het bestand staat:
KLIK

Nu breekt dit teken mijn script af. Is er een optie om dit teken te vervangen via replace oid.
Er zitten er ongeveer 10000 in dus handmatig is niet te doen.
Thnx :)

[ Voor 7% gewijzigd door ID-College op 24-02-2006 19:15 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Waarschijnlijk werk je ook met meerdere platforms? In windows is een newline "\r\n", terwijl bij bijvoorbeeld Linux alleen "\n" gebruikelijkelijk is. Met een fatsoenlijke editor kan je altijd wel newlines in een bepaald stramien omzetten (optie heet meestal file format, CR/LF, newlines...)

{signature}


Acties:
  • 0 Henk 'm!

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 23:51
Kijk eens naar Notepad++

http://notepad-plus.sourceforge.net

Daarmee zou het moeten lukken als je even vraagt alle tekens te tonen.
Vervolgens het te vervangen teken selecteren + Ctrl-C en een replace laten doen : als source even Ctrl-V doen en als destination een spatie ofzo ?

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
Ik werk met Windows XP en hij draait als server op linux geloof ik.
Met Notepad++ krijg ik het niet aan de gang. Sterker. Ik wil graag een functie oid in PHP zodat hij dit in elke loop vervangt. Dat is het minst omslachtig :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als PHP stopt met lezen op die plaats dan lijkt het me waarschijnlijk dat dat een byte is die overeen komt met een NULL- of EOF-byte. Je kan het oplossen door de filesize van het bestand te bekijken en gewoon door te gaan met tekst ophalen tot je dat aantal bytes binnengehaald hebt. Of er een nettere oplossing is weet ik niet. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 21-09 02:46

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Is dit eenmalig, of komt er regelmatig een nieuw bestand?

Want als het maar eenmalig is zou ik die xls gewoon openen in excell en em daar oplsaan als text, of csv ofzo. Iig een plaintext formaat, ipv wat je nu hebt :?


Goed, ik bekijk dus net die file en zie dat het gekke teken niks te maken heeft met het soort bestand ofzo, maar gewoon met de data die in een veld staat. Never mind.

[ Voor 29% gewijzigd door Orion84 op 24-02-2006 19:46 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
Tis idd gewoon een teken.
Kheb van alles geprobeerd, maar kom er niet uit. Misschien de oplossing van -NMe- proberen denk.
Tis wel omslachtig. Hoopte dat je het makkelijk kon omzuilen. Net zoals ;&nsb een spatie is :)

Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Waarom pas je het algoritme niet aan dat hij onbekende tekens negeert? Je zou dan op ascii waarde kunnen controleren of het iets is wat hij herkent, herkent hij het niet, overslaan en verder gaan, herkent hij m wel? verwerken en verdergaan..

Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
kun je niet iets doen zoals dit:

PHP:
1
$txt=preg_replace("#(\r\n)#si", "\n", $txt);
Dus met een reguliere expressie die tekentjes vervangen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom een reguliere expressie? Een gewone string replace is in jouw voorbeeldje meer dan voldoende. Verder: hoe wil hij een regexp gebruiken als hij het bestand niet eens in kan lezen door dat teken?

[ Voor 21% gewijzigd door NMe op 25-02-2006 10:38 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Ik vindt het een beetje vaag dat hij het bestand niet kan inlezen door dat teken.
Tis toch gewoon doorlezen todat je EoF tegenkomt. Dus, hoezo breekt dat teken zijn script af? Ik heb zelf ook met bestanden gewerkt waar onbekende tekens inzaten, nooit echt problemen mee gehad, wat betreft het uitlezen van het bestand dan.

Dus als je het mij vraagt zit er iets intrinsiek niet goed in zijn script, wat betreft het uitlezen van zn bestand.
Of ligt t aan mij dat ik me niet goed kan voorstellen waarom het uitlezen fout gaat :P

Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
Nou kijk het inlezen is wel ok. Maar zodra je een hij dit teken tegenkomt stopt hij de while loop.
Dus hij leest hem misschien correct in, maar dit teken (wat een enter schijnt te zijn in excel geloof ik) stopt de while lus.
Bij record 2 staat dit teken en zodra hij dit teken tegenkomt gaat hij niet meer verder. Wat dus als gevolg heeft dat record 3 t/m 4000 niet meer worden weergegeven.

Acties:
  • 0 Henk 'm!

  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

Vang dat dan af door binnen de loopconditie op CR/LF chars te filteren zou ik zeggen.

Acties:
  • 0 Henk 'm!

  • Sv3n
  • Registratie: Mei 2002
  • Laatst online: 22:14
dos2unix/unix2dos (ligt eraan welke je nodig hebt, volgens mij dos2unix in dit geval).

in linux/unix doen zou toch moeten werken ?

@hieronder
gewoon command uitvoeren in de commandline ?

http://linux.about.com/od/commands/l/blcmdl1_dos2uni.htm

[ Voor 32% gewijzigd door Sv3n op 25-02-2006 19:36 ]

Last.fm
Films!


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 23:05
@Droogkloot: Jij bedoelt met str_replace?
PHP:
1
str_replace("\r\n", "", $fields[$x]);

Dat werkt iig, want dat had ik al geprobeerd, ook met alleen \n. Er staat ook al een trim op $fields[$x]

@Sv3n, wat bedoel je :?

[ Voor 16% gewijzigd door ID-College op 25-02-2006 19:32 ]

Pagina: 1