Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Fputs - Zeilenende Tab und Co.

Frage Entwicklung

Mitglied: oliPro

oliPro (Level 1) - Jetzt verbinden

16.01.2010 um 13:59 Uhr, 5128 Aufrufe, 11 Kommentare

Altes Thema ... aber irgendwie hab ich es scheinbar immer noch nicht verstanden

Ich schreibe eine Datenzeile in eine Datei und möchte einen Zeilenumbruch realisieren.

So geht es nicht:
01.
  
02.
$ende = "\r\n"
03.
fputs($datei,$inhalt.$ende);

So geht es:
01.
  
02.
fputs($datei,$inhalt."\r\n");
Jetzt möchte ich allerdings den Zeilenumbruch (oder sonstige Sonderzeichen) per Variable angeben können.
Kann mir jemand helfen? Ich steh gerade total im Wald ...
Mitglied: dog
16.01.2010 um 15:49 Uhr
Es wäre sicher hilfreich zu erfahren, um welche Programmiersprache es geht.

PHP kann es jedenfalls nicht sein, denn da würde es funktionieren...

01.
<?php 
02.
 
03.
	$tf = tempnam('/tmp','t1'); 
04.
	var_dump($tf); 
05.
#=> string(21) "/private/tmp/t1FESoov" 
06.
	$fh = fopen($tf,'w+'); 
07.
	 
08.
	$clrf = "\r\n"
09.
	$inhalt = "Hallo Welt"
10.
	fwrite($fh, $inhalt.$clrf); 
11.
	 
12.
	fclose($fh); 
13.
	 
14.
	var_dump(file_get_contents($tf)); 
15.
#=> string(12) "Hallo Welt  
16.
17.
?>
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 01:06 Uhr
doch, ist PHP (Apache/2.0.55 (Ubuntu) PHP/5.1.2 mod_ssl/2.0.55 OpenSSL/0.9.8a mod_perl/2.0.2 Perl/v5.8.7)...
aber es geht nicht ... das wundert mich ja auch.
sitze an diesem problem schon seit stunden.


Ich hole aus einer Datenbank die Info, was ans Ende des Eintrages kommt.
$row[ende] = "\t" oder "\r\n";

Muss ich da noch irgend etwas konvertieren oder anders einlesen?
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 01:27 Uhr
Hier nochmal der komplette Code:


01.
  
02.
			for ($i=0; $i < $countZeilen; $i++) { 
03.
				$explodeZeile = explode(':', $felderZeile[$i]); 
04.
				if($i == ($countZeilen -1)) { 
05.
					$inhalt = $explodeZeile[0].$kanal[zeilentrenner]; 
06.
				} else
07.
					$inhalt = $explodeZeile[0].$kanal[feldtrenner]; 
08.
09.
				fwrite($datei,$inhalt); 
10.
			}
Bitte warten ..
Mitglied: dog
17.01.2010 um 01:40 Uhr
$inhalt = $explodeZeile[0].$kanal[zeilentrenner];

Die Indizes von assoziativen Arrays sind keine Konstanten, sondern Strings!!! (Aaaaaaaahhhh)

01.
$inhalt = $explodeZeile[0].$kanal['zeilentrenner'];


Scheinbar macht sich heute kein PHP-Anfänger mehr die Mühe den wichtigsten Part während der Code-Entwicklung in sein Programm aufzunehmen:
01.
	error_reporting(E_ALL|E_STRICT); 
02.
	ini_set('display_errors', 'On');
Und was dein Problem angeht:
Setz ein
01.
var_dump($kanal['zeilentrenner']);
vor Zeile 5 und guck was passiert...
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 01:47 Uhr
Problem erkannt ... aber Lösung fehlt mir noch.
Das Problem entsteht hier:

01.
$kanal = mysql_fetch_array($res);
Wenn ich $kanal['zeilentrenner'] im Script setze, geht es.
Wenn ich $kanal['zeilentrenner'] aus der DB hole, wo \r\n drin steht, geht es nicht.
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 02:19 Uhr
Danke für die Info ... aber scheinbar steh ich echt auf der Leitung im Moment?!
var_dump($kanal['zeilentrenner']); liefert mir string(4) "\r\n", was doch eigentlich auch richtig ist, oder?
Bitte warten ..
Mitglied: dog
17.01.2010 um 02:48 Uhr
Na das Problem ist doch eindeutig:

01.
string(4) "\r\n"
Der String hat die Länge 4, obwohl er nur aus 2 Steuerzeichen besteht - was sagt uns das?
Genua, in dem String steht nicht CR-LF (0D 0A) drinne, sondern wortwörtlich "\r\n" (5C 72 5C 6E) (wahrscheinlich steht auch genau das in der Datenbank)...

"\r" zu schreiben und dafür ein CR-Steuerzeichen zu erhalten funktioniert nur in einem Fall: Wenn man es in den PHP-Code mit doppelten Anführungszeichen schreibt!
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 17:47 Uhr
Dann müsste das doch eigentlich so funktionieren, wenn ich die Zeichen ersetzen lasse, bevor ich die Datei schreibe:

01.
$kanal['zeilentrenner'] = str_replace("\r",chr(0D),$kanal['zeilentrenner']); 
02.
$kanal['zeilentrenner'] = str_replace("\n",chr(0A),$kanal['zeilentrenner']); 
03.
$kanal['feldtrenner'] = str_replace("\t",chr(09),$kanal['feldtrenner']);
Geht aber leider nicht
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 17:48 Uhr
Hast Du noch nen Tipp?
In der DB steht wortwörtlich "\r\n" (5C 72 5C 6E) drin.
Was kann ich denn noch tun, damit dies dann in der Datei korrekt geschrieben wird?
Bitte warten ..
Mitglied: dog
17.01.2010 um 17:53 Uhr
$kanal['zeilentrenner'] = str_replace("\r",chr(0D),$kanal['zeilentrenner']);

Das ist doch schon wieder Quark

Du versuchst hier einen echten Zeilenumbruch mit Nichts zu ersetzen...

01.
$kanal['zeilentrenner'] = str_replace('\r',"\r",$kanal['zeilentrenner']); 
Und jetzt bitte verstehen und nicht nur kopieren.
Bitte warten ..
Mitglied: oliPro
17.01.2010 um 18:00 Uhr
Zitat von dog:
Und jetzt bitte verstehen und nicht nur kopieren.

Sorry, verstanden habe ich dieses Thema echt noch nicht, da hast Du recht. Aber so funktioniert es.

Trotzdem vielen lieben Dank für Deine Hilfe ... ich werde mir das die Tage auf jeden Fall nochmal näher ansehen!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leerzeichen am Zeilenende vermeiden
gelöst Frage von makroll10Batch & Shell6 Kommentare

Hallo, mit dem u.a. Batch (Auszug) erzeuge ich aus einer Access-Datenbank heraus die u.a. Datensätze. Leider wird hinter jedem ...

Visual Studio
Mit VBA die Tasenkombination AltGr+Tab oder Alt+Tab simulieren
gelöst Frage von UschadeVisual Studio5 Kommentare

Hallo liebe Admins, ich möchte auf unseren Terminals, an denen keine Tastatur angeschlossen ist, den Mitarbeitern die Möglichkeit geben ...

Schulung & Training
MSCA-Prüfung - Certbase und Co
Frage von deckard2019Schulung & Training9 Kommentare

Hallo. Ich möchte in nächster Zeit die MCSA Prüfung ablegen. Dafür lerne ich derzeit in einer virtuellen Serverumgebung und ...

Exchange Server
Zertifikat und Co Exchange 2013
gelöst Frage von uwe.nameExchange Server9 Kommentare

Glück Auf, ich habe jetzt mehrmal Exchange auf eine testumgebung installiert um zu üben und zu verstehen. Dabei habe ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 21 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...