PHP satır sonları GYTE tarafından berbat olmak

4 Cevap php

Sitemiz genellikle kullanıcıyı maç değiştiren bir bölüm vardır. (Örnekler, büyük ölçüde basitleştirilmiştir.)

user:Mike
last visit:Yesterday

[Ben şimdi değiştiremem] içeriğini güncellemek için kullanılan yöntem php varsayılan içerik html web sayfasını arar ve kullanıcıya hizmet öncesi yeni içeriği ile değiştirir olmasıdır.

$stats = "user:Mike
last visit:Yesterday";
$defaults = "user:Guest
last visit:None";
$code = implode($stats, explode($defaults, $code));

Biz GIT ile siteyi yedekleme başladı kadar tüm iyiydi [ceza için bir obur, biz].

Bu GIT html sayfasındaki satır karakterini değiştirir ve bu nedenle php artık orijinal metni bulabilirsiniz görünüyor.

Ben newlines saklandığı ya da değiştirilir nasıl anlamıyorum, ama bazen ben yeni satır değiştirmeniz gerekir diyerek ve 'unlock' veya 'devam' sunan, teslim sırasında GIT bir hata alıyorum.

Ben o sayfanın içine harici saklanan kopyadan varsayılan metni kopyala / yapıştır kadar bu site çalışmıyor izler, - ve yapmıyoruz bir taahhüt.

Ben arama / değiştirme yapmak için regex kullanabilirsiniz farkında değilim ama sayfa beni gereksiz ifadeler önlemek için yeterli kullanım görür.

Benim yerel makine Windows çalışır. Sunucu Unix çalışır.

4 Cevap

http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

crlf

This attribute controls the line-ending convention.

Set Setting the crlf attribute on a path is meant to mark the path as a "text" file. core.autocrlf conversion takes place without guessing the content type by inspection.

Unset Unsetting the crlf attribute on a path tells git not to attempt any end-of-line conversion upon checkin or checkout.

Söz konusu dosyalar için crlf Unset olarak belirtmek ve konu uzağa gitmeli tarafından CRLFs dönüştürmek için değil budala söyle.

Eğer core.autocrlf (örneğin "git config --get core.autocrlf" kullanarak) "giriş" olarak ayarlanmış yoksa edin.

Bu yapılandırma değişken Git UNIX kongre "\ n" (LF), MS Windows sonu-line kongre "\ r \ n" (CRLF) dönüştürmek yapar. Ayrıntılar için git-config man sayfasına bakınız; Dav mentioned in answer daha ince ayarlı bir seçim olduğunu crlf gitattribute.

Bu (\r\n, ya da 0x0D0A), Windows satırsonlarını dönüştürme Unix satırsonlarına (\n, veya 0x0A) oluyor gibi görünüyor. HTML, Windows satır sonları içeriyorsa, bir dizenin ortasında biten bir Unix-stili hat aramaya çalışmaz. Bunu açıkça böyle istediğiniz bir ifade edebiliriz:

$stats = "user:Mike\r\nlast visit:Yesterday";

Veya:

$stats = "user:Mike\nlast visit:Yesterday";

Yükleme sırasında, mysGit oldukları gibi line-sonları bırakarak seçeneği sunar.

Ben yükseltilmiş bir kez bu sorunu çözdü.