PHP kullanarak metin DIFF yapmak nasıl?

3 Cevap php

PHP için bunu yapmak için en iyi yolu nedir? Bunu herhangi bir PHP işlevi var mı, sütun içeriği dikkate alınarak çok büyük olabilir?

PHP fonksiyon mevcut değilse, ben ne kabuk programı arayabilirim?

teşekkürler

3 Cevap

PHP fark fonksiyonları inşa herhangi yok. ancak, yaşasın PEAR için: Text_Diff (Zor asla kullanılmış, ancak PEAR i güven).

ve hatta bir PECL paketi var, xdiff

ipucu: armut sınıfları saf php vardır pecl paketler modülleri bulunmaktadır. Normalde modüller sınıfları daha hızlı olan, ama aynı zamanda işlevselliği bağlıdır. Sadece test etmek ve değerlendirmek gerekir.

depolamak için: Ben düz metin değil, diffs saklamak istiyorum. alanı ucuz, birçok veritabanları (örneğin mysql) desteği veri sıkıştırma (veya php sıkıştırmak / de olabilir), ama düz metin saklamak, sen fark algoritması bağımsız konum ve gerekirse daha sonra değiştirebilirsiniz.

Eğer hıza ihtiyacınız varsa, şifresiz VE diffs hem depolayabilir.

Olağan süreç her ayrı revizyon saklamak ve kullanıcı işlem pahalı ise belki de bu çıktıyı önbelleğe alma, görüntülemek istediği zaman diff hesaplamak için.

Bir taban revizyon saklamak ve daha sonra önceki sürümlerini elde etmek için uygulanabilir farklarını bir dizi olabilir.

Her iki durumda da, yapılacak bir imtiyaz var; İlk seçenek diffing için gerekli biraz daha işleme pahasına ucuz özel sürümleri, almak yapar; İkinci fark, ucuz inceleyen yapar, ancak potansiyel olarak pahalı artışlı yaması pahasına belirli bir sürümünü edinin.

Metnin yalnızca son sürümü tam biçiminde saklanır ve önceki vesion son bir fark şudur: içerik çok büyük ve değişiklikler sadece küçük olanlar varsa, bir "ters delta" bir yaklaşım için gitmek için düşünebilirsiniz önceki sürümü.

Bu depolama alanı bir sürü yedek olurdu, ancak değişikliklerin sayısı büyük iki sürümleri karşılaştırmak, sürecin maliyeti önemli olabilir. Sonuçta, her zaman depolama alanı ve işleme gereksinimleri arasında bir değiş tokuş olduğunu.

Yapamazsın veya kullanıcı PEAR ve PECL'de etmek istemiyorsanız, yine exec tarafından çağrılan fark programı kullanabilirsiniz. Herhalde bir standart fark formatında gitmek için, ve kendi bir tane geliştirmeye asla.