php.de

Zurück   php.de > Lösungen durch Skripte > Scriptbörse

Scriptbörse PHP Lösungen für nen schmalen Taler

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.01.2009, 03:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard Multibyte Array Sortierung

Hallo,

ich habe ein Sortierskript für Multibyte-Arrays geschrieben, um endlich deutsche Umlaute unter UTF-8 gescheit sortiert zu bekommen.

Ich würde mich freuen wenn ihr es mal testen oder mir Performance-Verbesserungen vorschlagen würdet.

Gern auch Hinweise auf interne PHP-Funktionen die schon genau das können (sort und strcoll sortieren scheinbar noch strikt nach Zeichentabelleneintrag).

Geändert von Chriz (15.01.2009 um 03:31 Uhr).
Chriz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.01.2009, 03:27  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ja ich würds gern posten, aber ein Bug im Forum schneidet alles bei den UTF-8 Zeichen ab.

Hier die base64 Version:
PHP-Code:
<?php
echo base64_decode(<<<B64
PD9waHANCmVycm9yX3JlcG9ydGluZyhFX0FMTCB8IEVfU1RSSUNUKTsNCmhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTsNCg0KLyoqDQogKiBAZGVzYw0KICogU29ydCBhcnJheXMgd2l0aCBtdWx0aWJ5dGUgdmFsdWVzIHVzaW5nIGEgcHJlZGVmaW5lZCBvciBjdXN0b20gYWxwaGFiZXQuDQogKg0KICogQGF1dGhvciBDaHJpc3RpYW4gUmVpbmVja2UgPHJlaW5lY2tlQGJham9vZG9vLmRlPg0KICogQHZlcnNpb24gMS4wDQogKiBAc2luY2UgMjAwOC0wMS0xNQ0KICoNCiAqIEBleGFtcGxlDQogKiA8Y29kZT4NCiAqICAgICAvLyBxdWljaw0KICogICAgICRhcnJheSA9IGFycmF5KCJaZWJyYSIsICJFbmdsw6RuZGVyIiwgIkVuZ2xhbmRlciIsICJDaGluZXNlIiwgIsOEZmZjaGVuIiwgIsOcYmVyc2VlYm9vdCIsDQogKiAgICAgICAgICAgICAgICAgICAgIlVudGVyc2VlYm9vdCIsICLDnyIsICJTeiIsICJCw7xyZ2VyIiwgIkJ1cmdlciIsICJidXJnZXIiLCAiYsO8cmdlciIsICLDhMOWw5wiKSk7DQogKiAgICAgQUlTX1V0aWxfTXVsdGlieXRlU29ydDo6c3RhdGljU29ydCgkYXJyYXkpOw0KICogICAgIC8vIMOEZmZjaGVuLCDDhMOWw5wsIEJ1cmdlciwgQsO8cmdlciwgYnVyZ2VyLCBiw7xyZ2VyLCBDaGluZXNlLCBFbmdsYW5kZXIsIEVuZ2zDpG5kZXIsIFN6LCDDnywNCiAqICAgICAvLyBVbnRlcnNlZWJvb3QsIMOcYmVyc2VlYm9vdCwgWmVicmENCiAqDQogKg0KICogICAgIC8vIHdpdGggY3VzdG9tIHNldHVwDQogKiAgICAgJG1ic29ydCA9IG5ldyBBSVNfVXRpbF9NdWx0aWJ5dGVTb3J0KEFJU19VdGlsX011bHRpYnl0ZVNvcnQ6OkFscGhhYmV0R2VybWFuLA0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBSVNfVXRpbF9NdWx0aWJ5dGVTb3J0OjpFbmNvZGluZ1V0ZjgsDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFJU19VdGlsX011bHRpYnl0ZVNvcnQ6OkNhc2VQcmVmZXJlbmNlVXBwZXIpOw0KICogICAgICRtYnNvcnQtPnNvcnQoJGFycmF5KTsNCiAqICAgICAvLyBzYW1lIHJlc3VsdCBhcyBhYm92ZQ0KICogICAgICRtYnNvcnQtPnNvcnQoJG90aGVyQXJyYXkpOw0KICogPC9jb2RlPg0KICoNCiAqIEB0b2RvDQogKiBUaGlzIGNsYXNzIGNhbiBub3QgaGFuZGxlIHVua25vd24gc3BlY2lhbCBjaGFyYWN0ZXJzIChmYWxsYmFjayB0byBkZWZhdWx0IGJlaGF2aW91ciksDQogKiB3aGljaCBtYWtlcyBpdCBkZXNpcmFibGUgdG8gZmluZCBhIGdsb2JhbCwgc29ydGVkIGFscGhhYmV0LiBGZWVsIGZyZWUgdG8gYWRkIG1vcmUgY2hhciBtYXBzLg0KICovDQpjbGFzcyBBSVNfVXRpbF9NdWx0aWJ5dGVTb3J0DQp7DQogICAgY29uc3QgRW5jb2RpbmdVdGY4ICAgID0gIlVURi04IjsNCiAgICBjb25zdCBFbmNvZGluZ0RlZmF1bHQgPSBzZWxmOjpFbmNvZGluZ1V0Zjg7DQoNCiAgICBjb25zdCBDYXNlUHJlZmVyZW5jZVVwcGVyICAgPSB0cnVlOw0KICAgIGNvbnN0IENhc2VQcmVmZXJlbmNlTG93ZXIgICA9IGZhbHNlOw0KICAgIGNvbnN0IENhc2VQcmVmZXJlbmNlRGVmYXVsdCA9IHNlbGY6OkNhc2VQcmVmZXJlbmNlVXBwZXI7DQoNCiAgICBjb25zdCBBbHBoYWJldEdlcm1hbiAgPSAiZ2VybWFuIjsNCiAgICBjb25zdCBBbHBoYWJldERlZmF1bHQgPSBzZWxmOjpBbHBoYWJldEdlcm1hbjsNCg0KICAgIC8qKg0KICAgICAqIHByZWRlZmluZWQgbG9vc2UgYWxwaGFiZXRzDQogICAgICovDQogICAgcHJvdGVjdGVkIHN0YXRpYyAkYWxwaGFiZXRzID0gYXJyYXkoDQogICAgICAgIHNlbGY6OkFscGhhYmV0R2VybWFuID0+IGFycmF5KCJBIiA9PiAiw4QiLCAiYSIgPT4gIsOkw6AiLCAiTyIgPT4gIsOWIiwgIm8iID0+ICLDtiIsICJVIiA9PiAiw5wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidSIgPT4gIsO8IiwgInMiID0+ICLDnyIpKTsNCg0KICAgIC8qKg0KICAgICAqIG11bHRpYnl0ZSBlbmNvZGluZw0KICAgICAqIEBzZWUgc2VsZjo6RW5jb2RpbmdEZWZhdWx0DQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGVuY29kaW5nOw0KDQogICAgLyoqDQogICAgICogdXNlZCBsb29zZSBhbHBoYWJldCB0YWJsZQ0KICAgICAqIEBzZWUgc2VsZjo6JGFscGhhYmV0cw0KICAgICAqIEB2YXIgYXJyYXkNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGFscGhhYmV0TG9vc2U7DQoNCiAgICAvKioNCiAgICAgKiBhcnJheSBtYXAgKHNpbmdsZSBzcGVjaWFsIGNoYXIgPT4gQVNDSUktMTI4KQ0KICAgICAqIEB2YXIgYXJyYXkNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGFscGhhYmV0Ow0KDQogICAgLyoqDQogICAgICogY2FzZSBmbGFnLCB3aGV0aGVyIHVwcGVyIGNhc2UgY2hhcnMgYXJlIHByZWZlcnJlZCB0byBsb3dlciBjYXNlIGNoYXJzDQogICAgICogQHNlZSBzZWxmOjpDYXNlUHJlZmVyZW5jZURlZmF1bHQNCiAgICAgKiBAdmFyIGJvb2wNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGNhc2U7DQoNCiAgICAvKioNCiAgICAgKiBAcGFyYW0gYXJyYXl8c3RyaW5nIFtvcHRpb25hbF0gbG9vc2UgYWxwaGFiZXQgb3Iga2V5IGZvciBwcmVkZWZpbmVkIGxvb3NlIGFscGhhYmV0DQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICBbb3B0aW9uYWxdIGVuY29kaW5nIGZvciBtdWx0aWJ5dGUgZnVuY3Rpb25zDQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICBbb3B0aW9uYWxdIHByZWZlciB1cHBlcmNhc2UgY2hhciB0byBsb3dlci1jYXNlIChBYSBvciBhQSkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGFscGhhYmV0ID0gc2VsZjo6QWxwaGFiZXREZWZhdWx0LCAkZW5jb2RpbmcgPSBzZWxmOjpFbmNvZGluZ0RlZmF1bHQsICRwcmVmZXJVcHBlckNhc2UgPSBzZWxmOjpDYXNlUHJlZmVyZW5jZURlZmF1bHQpDQogICAgew0KICAgICAgICAkdGhpcy0+c2V0RW5jb2RpbmcoJGVuY29kaW5nKTsNCiAgICAgICAgJHRoaXMtPnNldEFscGhhYmV0KCRhbHBoYWJldCk7DQogICAgICAgICR0aGlzLT5zZXRVcHBlckNhc2VQcmVmZXJlbmNlKCRwcmVmZXJVcHBlckNhc2UpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEBkZXNjIHNob3J0Y3V0DQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdGF0aWNTb3J0KCYkYXJyYXksICRhbHBoYWJldCA9IHNlbGY6OkFscGhhYmV0RGVmYXVsdCwgJGVuY29kaW5nID0gc2VsZjo6RW5jb2RpbmdEZWZhdWx0LCAkcHJlZmVyVXBwZXJDYXNlID0gc2VsZjo6Q2FzZVByZWZlcmVuY2VEZWZhdWx0KQ0KICAgIHsNCiAgICAgICAgJHNlbGYgPSBuZXcgc2VsZigkYWxwaGFiZXQsICRlbmNvZGluZywgJHByZWZlclVwcGVyQ2FzZSk7DQogICAgICAgICRzZWxmLT5zb3J0KCRhcnJheSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQGRlc2Mgc29ydCBhcnJheSB3aXRoIHRoZSBjb25zdHJ1Y3Rvci1naXZlbiBzZXR0aW5ncw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBzb3J0KCYkYXJyYXkpDQogICAgew0KICAgICAgICAvKioNCiAgICAgICAgICogR290IHRoaXMgbWVzc2FnZTogIldhcm5pbmc6IHVzb3J0KCkgW2Z1bmN0aW9uLnVzb3J0XTogSW52YWxpZCBjb21wYXJpc29uIGZ1bmN0aW9uIj8NCiAgICAgICAgICogVGhlbiBkbyBub3QgY2FsbCB0aGlzIG1ldGhvZCBmcm9tIGEgc3RhdGljIGNvbnRleHQgb3IgY2hhbmdlIHlvdXIgZXJyb3JfcmVwb3J0aW5nIGxldmVsDQogICAgICAgICAqIHRvIEVfQUxMIHwgRV9TVFJJQ1QuDQogICAgICAgICAqLw0KICAgICAgICB1c29ydCgkYXJyYXksIGFycmF5KCR0aGlzLCAic29ydFN0cmluZyIpKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBAZGVzYyBtdWx0aWJ5dGUgc3RyaW5nIGNvbXBhcmUgKHNvbWV0aGluZyBsaWtlIHdlIHdvdWxkIGV4cGVjdCBiZWhpbmQgbWJfc3RyY21wKCkpDQogICAgICogQHJldHVybiBpbnQgc29ydCBvcmRlciB2YWx1ZSAoMSwgMCwgLTEpDQogICAgICovDQogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNvcnRTdHJpbmcoJGEsICRiKQ0KICAgIHsNCiAgICAgICAgJGF4ID0gbWJfc3RybGVuKCRhLCAkdGhpcy0+ZW5jb2RpbmcpOw0KICAgICAgICAkYnggPSBtYl9zdHJsZW4oJGIsICR0aGlzLT5lbmNvZGluZyk7DQogICAgICAgIGZvciAoJGkgPSAwLCAkeCA9IG1pbigkYXgsICRieCk7ICRpIDwgJHg7ICsrJGkpIHsNCiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+Y2hhckNtcChtYl9zdWJzdHIoJGEsICRpLCAxLCAkdGhpcy0+ZW5jb2RpbmcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iX3N1YnN0cigkYiwgJGksIDEsICR0aGlzLT5lbmNvZGluZykpOw0KICAgICAgICAgICAgaWYgKCRyZXN1bHQgIT0gMCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkdGhpcy0+aW50Q21wKCRheCwgJGJ4KTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBAZGVzYyBpbnRlZ2VyIGNvbXBhcmUNCiAgICAgKiBAcmV0dXJuIGludCBzb3J0IG9yZGVyIHZhbHVlICgtMSwgMCwgMSkNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW50Q21wKCRhLCAkYikNCiAgICB7DQogICAgICAgIHJldHVybiAoJGEgPT0gJGIpID8gMCA6ICgkYSA8ICRiID8gLTEgOiAxKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBAZGVzYyBtdWx0aWJ5dGUgY2hhciBjb21wYXJlDQogICAgICogQHJldHVybiBpbnQgc29ydCBvcmRlciB2YWx1ZSAoLTEsIDAsIDEpDQogICAgICovDQogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoYXJDbXAoJGEsICRiKQ0KICAgIHsNCiAgICAgICAgLy8gY2hlY2sgaWYgY2hhcmFjdGVycyBhcmUga25vd24gYXMgc3BlY2lhbCBjaGFycw0KICAgICAgICAkYWkgPSBpc3NldCgkdGhpcy0+YWxwaGFiZXRbJGFdKTsgLy8gYWkgPSBhIGlzc2V0DQogICAgICAgICRiaSA9IGlzc2V0KCR0aGlzLT5hbHBoYWJldFskYl0pOw0KDQogICAgICAgIGlmICgkYWkgJiYgJGJpKSB7DQogICAgICAgICAgICAvLyBib3RoIGFyZSBrbm93biBzcGVjaWFsIGNoYXJzDQogICAgICAgICAgICAkYXIgPSAkdGhpcy0+YWxwaGFiZXRbJGFdOyAvLyBhciA9IGEgcmVwcmVzZW50YXRpb24gKEFTQ0lJLTEyOCkNCiAgICAgICAgICAgICRiciA9ICR0aGlzLT5hbHBoYWJldFskYl07DQogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmNoYXJDYXNlQ21wKCRhciwgJGJyKTsNCiAgICAgICAgICAgIGlmICgkcmVzdWx0ID09IDAgJiYgJGEgIT0gJGIpIHsNCiAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZW4ndCBlcXVhbCwgYnV0IHRoZWlyIHJlcHJlc2VudGF0aW9uIGlzLCBzbyBjaGVjayBwb3NpdGlvbiBpbiBvcmlnaW5hbCBhcnJheQ0KICAgICAgICAgICAgICAgICRhcCA9IG1iX3N0cnBvcygkdGhpcy0+YWxwaGFiZXRMb29zZVskYXJdLCAkYSwgMCwgJHRoaXMtPmVuY29kaW5nKTsNCiAgICAgICAgICAgICAgICAkYnAgPSBtYl9zdHJwb3MoJHRoaXMtPmFscGhhYmV0TG9vc2VbJGJyXSwgJGIsIDAsICR0aGlzLT5lbmNvZGluZyk7DQogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5pbnRDbXAoJGFwLCAkYnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKCRhaSkgew0KICAgICAgICAgICAgLy8gJGEgaXMgYSBrbm93biBzcGVjaWFsIGNoYXIsICRiIG5vdA0KICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5jaGFyQ2FzZUNtcCgkdGhpcy0+YWxwaGFiZXRbJGFdLCAkYik7DQogICAgICAgICAgICAgLy8gc28gdGhleSBhcmUgbm90IGVxdWFsLCAkcmVzdWx0ID0gMCBtZWFucyAkYiBpcyAic21hbGxlciINCiAgICAgICAgICAgICRyZXN1bHQgPSAoJHJlc3VsdCA9PSAwKSA/IDEgOiAkcmVzdWx0Ow0KICAgICAgICB9IGVsc2UgaWYgKCRiaSkgew0KICAgICAgICAgICAgLy8gJGIgaXMgYSBrbm93biBzcGVjaWFsIGNoYXIsICRhIG5vdA0KICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5jaGFyQ2FzZUNtcCgkYSwgJHRoaXMtPmFscGhhYmV0WyRiXSk7DQogICAgICAgICAgICAvLyBzbyB0aGV5IGFyZSBub3QgZXF1YWw7ICRyZXN1bHQgPSAwIG1lYW5zICRhIGlzICJzbWFsbGVyIg0KICAgICAgICAgICAgJHJlc3VsdCA9ICgkcmVzdWx0ID09IDApID8gLTEgOiAkcmVzdWx0Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8gYm90aCBhcmUgdW5rbm93biBjaGFyYWN0ZXJzDQogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmNoYXJDYXNlQ21wKCRhLCAkYik7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQGRlc2MgbXVsdGlieXRlIGNoYXIgY2FzZSBjb21wYXJlDQogICAgICogQHJldHVybiBzb3J0IG9yZGVyIHZhbHVlICgtMSwgMCwgMSkNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hhckNhc2VDbXAoJGEsICRiKQ0KICAgIHsNCiAgICAgICAgaWYgKCRhID09ICRiKSB7DQogICAgICAgICAgICAvLyB0aGV5IGFyZSBlcXVhbCwgbm8gY2hlY2sgcmVxdWlyZWQNCiAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICB9DQogICAgICAgICRBID0gbWJfc3RydG91cHBlcigkYSwgJHRoaXMtPmVuY29kaW5nKTsNCiAgICAgICAgJEIgPSBtYl9zdHJ0b3VwcGVyKCRiLCAkdGhpcy0+ZW5jb2RpbmcpOw0KICAgICAgICAkcmVzdWx0ID0gc3RyY21wKCRBLCAkQik7DQogICAgICAgIGlmICgkcmVzdWx0ID09IDApIHsNCiAgICAgICAgICAgIC8vIHRoZWlyIG1iX3N0cnRvdXBwZXIoKSB2YWx1ZSBpcyBlcXVhbCwgc2VsZWN0IGNvbXBhcmUgdmFsdWUgZGVwZW5kaW5nIG9uIGNhc2UgcHJlZmVyZW5jZQ0KICAgICAgICAgICAgJHJlc3VsdCA9ICgkQSAhPSAkYSkgPyAkdGhpcy0+Y2FzZSA6ICgkdGhpcy0+Y2FzZSAqIC0xKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0QWxwaGFiZXQoJGFscGhhYmV0KQ0KICAgIHsNCiAgICAgICAgaWYgKCFpc19hcnJheSgkYWxwaGFiZXQpKSB7DQogICAgICAgICAgICAvLyB1c2UgJGFscGhhYmV0IGFzIGtleSBmb3IgcHJlZGVmaW5lZCBhbHBoYWJldHMNCiAgICAgICAgICAgICRhbHBoYWJldCA9IHNlbGY6OiRhbHBoYWJldHNbJGFscGhhYmV0XTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBzdG9yZSBsb29zZSBhbHBoYWJldCB0byBkaWZmZXIgYmV0d2VlbiBzcGVjaWFsIGNoYXJzIHdpdGggdGhlIHNhbWUgQVNDSUktMTI4IHJlcHJlc2VudGF0aW9uDQogICAgICAgICR0aGlzLT5hbHBoYWJldExvb3NlID0gJGFscGhhYmV0Ow0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+YWxwaGFiZXRMb29zZSBhcyAkb3JkZXIgPT4gJGNoYXIpIHsNCiAgICAgICAgICAgIGZvciAoJGkgPSAwLCAkeCA9IG1iX3N0cmxlbigkY2hhciwgJHRoaXMtPmVuY29kaW5nKTsgJGkgPCAkeDsgKyskaSkgew0KICAgICAgICAgICAgICAgIC8vIHVzZSBlYWNoIG11bHRpYnl0ZSBjaGFyIGFzIGtleSB3aXRoIGl0cyBBU0NJSS0xMjggcmVwcmVzZW50YXRpb24gYXMga2V5DQogICAgICAgICAgICAgICAgJHRoaXMtPmFscGhhYmV0W21iX3N1YnN0cigkY2hhciwgJGksIDEsICR0aGlzLT5lbmNvZGluZyldID0gJG9yZGVyOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldEVuY29kaW5nKCRlbmNvZGluZykNCiAgICB7DQogICAgICAgICR0aGlzLT5lbmNvZGluZyA9ICRlbmNvZGluZzsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VXBwZXJDYXNlUHJlZmVyZW5jZSgkcHJlZmVyVXBwZXJDYXNlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmNhc2UgPSAkcHJlZmVyVXBwZXJDYXNlID8gMSA6IC0xOw0KICAgIH0NCn0=
B64
);
?>

Geändert von Chriz (15.01.2009 um 03:33 Uhr).
Chriz ist offline   Mit Zitat antworten
Alt 15.01.2009, 12:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Cool. Ein Geheimposting!

PS: Schöne Sache. Ich würde noch case-insensitivity anregen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (15.01.2009 um 12:33 Uhr).
nikosch ist gerade online   Mit Zitat antworten
Alt 15.01.2009, 13:54  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

PHP-Code:
<?php
/**
 * @desc
 * Sort arrays with multibyte values using a predefined or custom alphabet.
 *
 * @author Christian Reinecke <reinecke@bajoodoo.de>
 * @version 1.0
 * @since 2008-01-15
 *
 * @todo
 * This class can not handle unknown special characters (fallback to default behaviour),
 * which makes it desirable to find a global, sorted alphabet. Feel free to add more char maps.
 */
class AIS_Util_MultibyteSort
{
    const 
EncodingUtf8    "UTF-8";
    const 
EncodingDefault self::EncodingUtf8;

    const 
CasePreferenceUpper   true;
    const 
CasePreferenceLower   false;
    const 
CasePreferenceDefault self::CasePreferenceUpper;

    
/**
     * multibyte encoding
     * @see self::EncodingDefault
     * @var string
     */
    
protected $encoding;

    
/**
     * used loose alphabet table
     * @see self::$alphabets
     * @var array
     */
    
protected $alphabetLoose;

    
/**
     * array map (single special char => ASCII-128)
     * @var array
     */
    
protected $alphabet;

    
/**
     * case flag, whether upper case chars are preferred to lower case chars
     * @see self::CasePreferenceDefault
     * @var bool
     */
    
protected $case;

    
/**
     * @param array|string [optional] loose alphabet or key for predefined loose alphabet
     * @param string       [optional] encoding for multibyte functions
     * @param bool         [optional] prefer uppercase char to lower-case (Aa or aA)
     */
    
public function __construct($alphabet$encoding self::EncodingDefault$preferUpperCase self::CasePreferenceDefault)
    {
        
$this->setEncoding($encoding);
        
$this->setAlphabet($alphabet);
        
$this->setUpperCasePreference($preferUpperCase);
    }

    
/**
     * @desc shortcut
     */
    
public static function staticSort(&$array$alphabet$encoding self::EncodingDefault$preferUpperCase self::CasePreferenceDefault)
    {
        
$self = new self($alphabet$encoding$preferUpperCase);
        
$self->sort($array);
    }

    
/**
     * @desc sort array with the constructor-given settings
     */
    
public function sort(&$array)
    {
        
/**
         * Got this message: "Warning: usort() [function.usort]: Invalid comparison function"?
         * Then do not call this method from a static context or change your error_reporting level
         * to E_ALL | E_STRICT.
         */
        
usort($array, array($this"sortString"));
    }

    
/**
     * @desc multibyte string compare (something like we would expect behind mb_strcmp())
     * @return int sort order value (1, 0, -1)
     */
    
protected function sortString($a$b)
    {
        
$ax mb_strlen($a$this->encoding);
        
$bx mb_strlen($b$this->encoding);
        for (
$i 0$x min($ax$bx); $i $x; ++$i) {
            
$result $this->charCmp(mb_substr($a$i1$this->encoding),
                                     
mb_substr($b$i1$this->encoding));
            if (
$result != 0) {
                return 
$result;
            }
        }
        return 
$this->intCmp($ax$bx);
    }

    
/**
     * @desc integer compare
     * @return int sort order value (-1, 0, 1)
     */
    
protected function intCmp($a$b)
    {
        return (
$a == $b) ? : ($a $b ? -1);
    }

    
/**
     * @desc multibyte char compare
     * @return int sort order value (-1, 0, 1)
     */
    
protected function charCmp($a$b)
    {
        
// check if characters are known as special chars
        
$ai = isset($this->alphabet[$a]); // ai = a isset
        
$bi = isset($this->alphabet[$b]);

        if (
$ai && $bi) {
            
// both are known special chars
            
$ar $this->alphabet[$a]; // ar = a representation (ASCII-128)
            
$br $this->alphabet[$b];
            
$result $this->charCaseCmp($ar$br);
            if (
$result == && $a != $b) {
                
// they aren't equal, but their representation is, so check position in original array
                
$ap mb_strpos($this->alphabetLoose[$ar], $a0$this->encoding);
                
$bp mb_strpos($this->alphabetLoose[$br], $b0$this->encoding);
                
$result $this->intCmp($ap$bp);
            }
        } else if (
$ai) {
            
// $a is a known special char, $b not
            
$result $this->charCaseCmp($this->alphabet[$a], $b);
             
// so they are not equal, $result = 0 means $b is "smaller"
            
$result = ($result == 0) ? $result;
        } else if (
$bi) {
            
// $b is a known special char, $a not
            
$result $this->charCaseCmp($a$this->alphabet[$b]);
            
// so they are not equal; $result = 0 means $a is "smaller"
            
$result = ($result == 0) ? -$result;
        } else {
            
// both are unknown characters
            
$result $this->charCaseCmp($a$b);
        }
        return 
$result;
    }

    
/**
     * @desc multibyte char case compare
     * @return sort order value (-1, 0, 1)
     */
    
protected function charCaseCmp($a$b)
    {
        if (
$a == $b) {
            
// they are equal, no check required
            
return 0;
        }
        
$A mb_strtoupper($a$this->encoding);
        
$B mb_strtoupper($b$this->encoding);
        
$result strcmp($A$B);
        if (
$result == 0) {
            
// their mb_strtoupper() value is equal, select compare value depending on case preference
            
$result = ($A != $a) ? $this->case : ($this->case * -1);
        }
        return 
$result;
    }

    protected function 
setAlphabet($alphabet)
    {
        if (!
is_array($alphabet)) {
            
// use $alphabet as key for predefined alphabets
            
$alphabet self::$alphabets[$alphabet];
        }
        
// store loose alphabet to differ between special chars with the same ASCII-128 representation
        
$this->alphabetLoose $alphabet;
        foreach (
$this->alphabetLoose as $order => $char) {
            for (
$i 0$x mb_strlen($char$this->encoding); $i $x; ++$i) {
                
// use each multibyte char as key with its ASCII-128 representation as key
                
$this->alphabet[mb_substr($char$i1$this->encoding)] = $order;
            }
        }
    }

    protected function 
setEncoding($encoding)
    {
        
$this->encoding $encoding;
    }

    protected function 
setUpperCasePreference($preferUpperCase)
    {
        
$this->case $preferUpperCase : -1;
    }
}
?>

Geändert von Chriz (15.01.2009 um 14:01 Uhr).
Chriz ist offline   Mit Zitat antworten
Alt 15.01.2009, 14:04  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Gibts doch nicht, ich kann das Anwendungsbeispiel nichtmal eingetippt hier posten
OK dann zur Erklärung, ein $alphabet ist ein assoziativer Array, der Schlüssel muss ein ASCII-128-Zeichen sein, dessen Werte die Sonderzeichen, die bei der Sortierung dann direkt nach diesem ASCII-128-Zeichen einsortiert werden. Möglich ist als Wert mehr als ein Zeichen, also ä oder Akcent a (das kann ich hier offenbar nicht posten).

Geändert von Chriz (15.01.2009 um 14:07 Uhr).
Chriz ist offline   Mit Zitat antworten
Alt 15.01.2009, 14:22  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Yepp, bekanntes Problem: http://www.php.de/board-support/4935...uckt-text.html (Zeichensatz-Probleme, Board verschluckt Text)
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 02.03.2009, 20:13  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hier nochmal die verständliche Version mit erweitertem Kommentar und Beispiel, ich hoffe das klappt jetzt - habe das Akcent a entfernt. Die API hat sich etwas verändert, das Alphabet muss jetzt nicht mehr übergeben werden, sondern ist vordefiniert.

PHP-Code:
<?php
/**
 * @desc
 * Sort arrays with multibyte values using a predefined or custom alphabet.
 *
 * @author Christian Reinecke <reinecke@bajoodoo.de>
 * @version 1.1
 * @since 2009-01-15
 *
 * @example
 * <code>
 *     // quick
 *     $array = array("Zebra", "Engländer", "England", "Chinese", "Äffchen", "Überseeboot",
 *                    "Unterseeboot", "ß", "Sz", "Bürger", "Burger", "burger", "bürger", "ÄÖÜ");
 *     AIS_Util_MultibyteSort::staticSort($array);
 *     print_r($array);
 *     // Array (
 *     // [0] => Äffchen [1] => ÄÖÜ [2] => Burger [3] => Bürger [4] => burger [5] => bürger
 *     // [6] => Chinese [7] => England [8] => Engländer [9] => Sz [10] => ß [11] => Unterseeboot
 *     // [12] => Überseeboot [13] => Zebra
 *     // )
 *
 *
 *     // with custom setup
 *     $mbsort = new AIS_Util_MultibyteSort("UTF-8", true);
 *     $mbsort->sort($array);
 *     print_r($array)
 *     // same result as above
 *     $mbsort->sort($otherArray);
 * </code>
 *
 * @todo
 * This class can not handle unknown special characters (fallback to default behaviour),
 * which makes it desirable to find a global, sorted alphabet. Feel free to add more special chars.
 *
 * Don't forget to send the correct charset in your header
 * <code>
 *     header("Content-type: text/html; charset=utf-8");
 * </code>
 */
class AIS_Util_MultibyteSort
{
    const 
EncodingUtf8    "UTF-8";
    const 
EncodingDefault self::EncodingUtf8;

    const 
CasePreferenceUpper   true;
    const 
CasePreferenceLower   false;
    const 
CasePreferenceDefault self::CasePreferenceUpper;

    protected static 
$instances = array();
    protected static 
$alphabetLoose = array("A" => "Ä""a" => "äæå""O" => "Ö""o" => "ö""U" => "Ü",
                                            
"u" => "ü""s" => "ß");

    
/**
     * multibyte encoding
     * @see self::EncodingDefault
     * @var string
     */
    
protected $encoding;

    
/**
     * array map (single special char => ASCII-128)
     * @var array
     */
    
protected $alphabet;

    
/**
     * case flag, whether upper case chars are preferred to lower case chars
     * @see self::CasePreferenceDefault
     * @var bool
     */
    
protected $case;

    
/**
     * @param array|string [optional] loose alphabet or key for predefined loose alphabet
     * @param string       [optional] encoding for multibyte functions
     * @param bool         [optional] prefer uppercase char to lower-case (Aa or aA)
     */
    
public function __construct($encoding self::EncodingDefault$preferUpperCase self::CasePreferenceDefault)
    {
        
$this->setEncoding($encoding);
        
$this->setUpperCasePreference($preferUpperCase);
        
$this->loadAlphabet();
    }

    
/**
     * @desc
     * The instance for all static calls is stored in a static property, so you can use the
     * instance once again. But if you prefer to use this class only once, use the __construct
     * method. There's no overhead then.
     */
    
public static function getInstance($encoding self::EncodingDefault$preferUpperCase self::CasePreferenceDefault)
    {
        
$hash crc32($encoding $preferUpperCase);
        if (!
array_key_exists($hashself::$instances)) {
            
self::$instances[$hash] = new self($encoding$preferUpperCase);
        }
        return 
self::$instances[$hash];
    }

    
/**
     * @desc shortcut
     */
    
public static function sortStatic(&$array$encoding self::EncodingDefault$preferUpperCase self::CasePreferenceDefault)
    {
        
$self self::getInstance($encoding$preferUpperCase);
        
$self->sort($array);
    }

    public static function 
asortStatic(&$array$encoding self::EncodingDefault$preferUpperCase self::CasePreferenceDefault)
    {
        
$self self::getInstance($encoding$preferUpperCase);
        
$self->asort($array);
    }

    
/**
     * @desc sort array with the constructor-given settings
     */
    
public function sort(&$array)
    {
        
/**
         * Got this message: "Warning: usort() [function.usort]: Invalid comparison function"?
         * Then do not call this method from a static context and change your error_reporting level
         * to E_ALL | E_STRICT.
         */
        
usort($array, array($this"sortString"));
    }

    public function 
asort(&$array)
    {
        
uasort($array, array($this"sortString"));
    }

    
/**
     * @desc multibyte string compare (something like we would expect behind mb_strcmp())
     * @return int sort order value (1, 0, -1)
     */
    
protected function sortString($a$b)
    {
        
$ax mb_strlen($a$this->encoding);
        
$bx mb_strlen($b$this->encoding);
        for (
$i 0$x min($ax$bx); $i $x; ++$i) {
            
$result $this->charCmp(mb_substr($a$i1$this->encoding),
                                     
mb_substr($b$i1$this->encoding));
            if (
$result != 0) {
                return 
$result;
            }
        }
        return 
$this->intCmp($ax$bx);
    }

    
/**
     * @desc integer compare
     * @return int sort order value (-1, 0, 1)
     */
    
protected function intCmp($a$b)
    {
        return (
$a == $b) ? : ($a $b ? -1);
    }

    
/**
     * @desc multibyte char compare
     * @return int sort order value (-1, 0, 1)
     */
    
protected function charCmp($a$b)
    {
        
// check if characters are known as special chars
        
$ai = isset($this->alphabet[$a]); // ai = a isset
        
$bi = isset($this->alphabet[$b]);

        if (
$ai && $bi) {
            
// both are known special chars
            
$ar $this->alphabet[$a]; // ar = a representation (ASCII-128)
            
$br $this->alphabet[$b];
            
$result $this->charCaseCmp($ar$br);
            if (
$result == && $a != $b) {
                
// they aren't equal, but their representation is, so check position in original array
                
$ap mb_strpos(self::$alphabetLoose[$ar], $a0$this->encoding);
                
$bp mb_strpos(self::$alphabetLoose[$br], $b0$this->encoding);
                
$result $this->intCmp($ap$bp);
            }
        } else if (
$ai) {
            
// $a is a known special char, $b not
            
$result $this->charCaseCmp($this->alphabet[$a], $b);
             
// so they are not equal, $result = 0 means $b is "smaller"
            
$result = ($result == 0) ? $result;
        } else if (
$bi) {
            
// $b is a known special char, $a not
            
$result $this->charCaseCmp($a$this->alphabet[$b]);
            
// so they are not equal; $result = 0 means $a is "smaller"
            
$result = ($result == 0) ? -$result;
        } else {
            
// both are unknown characters
            
$result $this->charCaseCmp($a$b);
        }
        return 
$result;
    }

    
/**
     * @desc multibyte char case compare
     * @return sort order value (-1, 0, 1)
     */
    
protected function charCaseCmp($a$b)
    {
        if (
$a == $b) {
            
// they are equal, no check required
            
return 0;
        }
        
$A mb_strtoupper($a$this->encoding);
        
$B mb_strtoupper($b$this->encoding);
        
$result strcmp($A$B);
        if (
$result == 0) {
            
// their mb_strtoupper() value is equal, select compare value depending on case preference
            
$result = ($A != $a) ? $this->case : ($this->case * -1);
        }
        return 
$result;
    }

    protected function 
loadAlphabet()
    {
        if (empty(
$this->alphabet)) {
            
// load only once per instance
            // $alphabetLoose is required to differ between special chars with the same ASCII-128 representation
            
foreach (self::$alphabetLoose as $order => $char) {
                for (
$i 0$x mb_strlen($char$this->encoding); $i $x; ++$i) {
                    
// use each multibyte char as key with its ASCII-128 representation as key
                    
$this->alphabet[mb_substr($char$i1$this->encoding)] = $order;
                }
            }
        }
    }

    protected function 
setEncoding($encoding)
    {
        
$this->encoding $encoding;
    }

    protected function 
setUpperCasePreference($preferUpperCase)
    {
        
$this->case $preferUpperCase : -1;
    }
}
?>
Chriz ist offline   Mit Zitat antworten
Alt 02.03.2009, 21:13  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Also ich denke ein link zu phpclasses.org macht mehr Sinn, weil oben in der Zeile:
PHP-Code:
protected static $alphabetLoose 
hat es schon wieder was mit den Umlauten zerhauen
robo47 ist offline   Mit Zitat antworten
Alt 02.03.2009, 21:15  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ach ja? Bei mir nicht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 02.03.2009, 21:23  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

So siehts bei mir aus: Bild ansehen - LD-Host.de

so sollte es aussehen:
Bild ansehen - LD-Host.de

man beachte das "a" =>
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
[Erledigt] Sortierung im Array mit Randomwerten PHP-Fortgeschrittene 2 03.08.2005 09:28
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
Alphabetische Sortierung im Array PHP Tipps 2004 4 17.08.2004 10:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mb_strcmp, php mb_strcmp, php multibyte sort, mb_sort php, php multibyte compare, php mb sort, php strcmp umlaute, mb_strcmp php, php sort multibyte, multibyte sort, php multibyte, php mb_sort, php mb strcmp, multibyte array, php multibyte string compare, php sort_string umlaute, php array sort multibyte, http://www.php.de/scriptboerse/50710-multibyte-array-sortierung.html, zend framework array sortieren umlaute, php array sortieren umlaute

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:25 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum