1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742: 743: 744: 745: 746: 747: 748: 749: 750: 751: 752: 753: 754: 755: 756: 757: 758: 759: 760: 761: 762: 763: 764: 765: 766: 767: 768: 769: 770: 771: 772: 773: 774: 775: 776: 777: 778: 779: 780: 781: 782: 783: 784: 785: 786: 787: 788: 789: 790: 791: 792: 793: 794: 795: 796: 797: 798: 799: 800: 801: 802: 803: 804: 805: 806: 807: 808: 809: 810: 811: 812: 813: 814: 815: 816: 817: 818: 819: 820: 821: 822: 823: 824: 825: 826: 827: 828: 829: 830: 831: 832: 833: 834: 835: 836: 837: 838: 839: 840: 841: 842: 843: 844: 845: 846: 847: 848: 849: 850: 851: 852: 853: 854: 855: 856: 857: 858: 859: 860: 861: 862: 863: 864: 865: 866: 867: 868: 869: 870: 871: 872: 873: 874: 875: 876: 877: 878: 879: 880: 881: 882: 883: 884: 885: 886: 887: 888: 889: 890: 891: 892: 893: 894: 895: 896: 897: 898: 899: 900: 901: 902: 903: 904: 905: 906: 907: 908: 909: 910: 911: 912: 913: 914: 915: 916: 917: 918: 919: 920: 921: 922: 923: 924: 925: 926: 927: 928: 929: 930: 931: 932: 933: 934: 935: 936: 937: 938: 939: 940: 941: 942: 943: 944: 945: 946: 947: 948: 949: 950: 951: 952: 953: 954: 955: 956: 957: 958: 959: 960: 961: 962: 963: 964: 965: 966: 967: 968: 969: 970: 971: 972: 973: 974: 975: 976: 977: 978: 979: 980: 981: 982: 983: 984: 985: 986: 987: 988: 989: 990: 991: 992: 993: 994: 995: 996: 997: 998: 999: 1000: 1001: 1002: 1003: 1004: 1005: 1006: 1007: 1008: 1009: 1010: 1011: 1012: 1013: 1014: 1015: 1016: 1017: 1018: 1019: 1020: 1021: 1022: 1023: 1024: 1025: 1026: 1027: 1028: 1029: 1030: 1031: 1032: 1033: 1034: 1035: 1036: 1037: 1038: 1039: 1040: 1041: 1042: 1043: 1044: 1045: 1046: 1047: 1048: 1049: 1050: 1051: 1052: 1053: 1054: 1055: 1056: 1057: 1058: 1059: 1060: 1061: 1062: 1063: 1064: 1065: 1066: 1067: 1068: 1069: 1070: 1071: 1072: 1073: 1074: 1075: 1076: 1077: 1078: 1079: 1080: 1081: 1082: 1083: 1084: 1085: 1086: 1087: 1088: 1089: 1090: 1091: 1092: 1093: 1094: 1095: 1096: 1097: 1098: 1099: 1100: 1101: 1102: 1103: 1104: 1105: 1106: 1107: 1108: 1109: 1110: 1111: 1112: 1113:
<?php
/**
* Translates characters with diacritical marks to simple equivalents
*
* @author Stephen Billard (sbillard)
* @package plugins
* @subpackage seo-zenphoto
*/
$plugin_is_filter = 5 | ADMIN_PLUGIN;
$plugin_description = gettext("SEO filter to translate extended characters into their basic alpha-numeric equivalents.");
$plugin_author = "Stephen Billard (sbillard)";
$plugin_disable = (zp_has_filter('seoFriendly') && !extensionEnabled('seo_zenphoto')) ? sprintf(gettext('Only one SEO filter plugin may be enabled. <a href="#%1$s"><code>%1$s</code></a> is already enabled.'), stripSuffix(get_filterScript('seoFriendly'))) : '';
$plugin_category = gettext('SEO');
$option_interface = 'zenphoto_seo';
if ($plugin_disable) {
enableExtension('zenphoto_seo', 0);
} else {
zp_register_filter('seoFriendly', 'zenphoto_seo::filter');
zp_register_filter('seoFriendly_js', 'zenphoto_seo::js');
}
/**
* Option handler class
*
*/
class zenphoto_seo {
/**
* class instantiation function
*
* @return zenphoto_seo
*/
function __construct() {
setOptionDefault('zenphoto_seo_lowercase', 1);
}
/**
* Reports the supported options
*
* @return array
*/
function getOptionsSupported() {
return array(gettext('Lowercase only') => array('key' => 'zenphoto_seo_lowercase', 'type' => OPTION_TYPE_CHECKBOX,
'desc' => gettext('When set, all characters are converted to lower case.')));
}
function handleOption($option, $currentValue) {
}
private static $specialchars = array(
"À" => "A",
"Á" => "A",
"Â" => "A",
"Ã" => "A",
"Å" => "A",
"Ā" => "A",
"Ă" => "A",
"Ą" => "A",
"Ǟ" => "A",
"Ǡ" => "A",
"Ǻ" => "A",
"Ȁ" => "A",
"Ȃ" => "A",
"Ȧ" => "A",
"Ḁ" => "A",
"Ả" => "A",
"Ấ" => "A",
"Ầ" => "A",
"Ẩ" => "A",
"Ẫ" => "A",
"Ậ" => "A",
"Ắ" => "A",
"Ằ" => "A",
"Ẳ" => "A",
"Ẵ" => "A",
"Ặ" => "A",
"Ä" => "AE",
"Æ" => "AE",
"Ǽ" => "AE",
"Ǣ" => "AE",
"Ḃ" => "B",
"Ɓ" => "B",
"Ḅ" => "B",
"Ḇ" => "B",
"Ƃ" => "B",
"Ƅ" => "B",
"Ć" => "C",
"Ĉ" => "C",
"Ċ" => "C",
"Č" => "C",
"Ƈ" => "C",
"Ç" => "C",
"Ḉ" => "C",
"Ḋ" => "D",
"Ɗ" => "D",
"Ḍ" => "D",
"Ḏ" => "D",
"Ḑ" => "D",
"Ḓ" => "D",
"Ď" => "D",
"Đ" => "D",
"Ɖ" => "D",
"È" => "E",
"É" => "E",
"Ê" => "E",
"Ẽ" => "E",
"Ē" => "E",
"Ĕ" => "E",
"Ė" => "E",
"Ë" => "E",
"Ẻ" => "E",
"Ě" => "E",
"Ȅ" => "E",
"Ȇ" => "E",
"Ẹ" => "E",
"Ȩ" => "E",
"Ę" => "E",
"Ḙ" => "E",
"Ḛ" => "E",
"Ề" => "E",
"Ế" => "E",
"Ễ" => "E",
"Ể" => "E",
"Ḕ" => "E",
"Ḗ" => "E",
"Ệ" => "E",
"Ḝ" => "E",
"Ǝ" => "E",
"Ɛ" => "E",
"Ḟ" => "F",
"Ƒ" => "F",
"Ǵ" => "G",
"Ĝ" => "G",
"Ḡ" => "G",
"Ğ" => "G",
"Ġ" => "G",
"Ǧ" => "G",
"Ɠ" => "G",
"Ģ" => "G",
"Ǥ" => "G",
"Ĥ" => "H",
"Ḣ" => "H",
"Ḧ" => "H",
"Ȟ" => "H",
"Ƕ" => "H",
"Ḥ" => "H",
"Ḩ" => "H",
"Ḫ" => "H",
"Ħ" => "H",
"Ì" => "I",
"Í" => "I",
"Î" => "I",
"Ĩ" => "I",
"Ī" => "I",
"Ĭ" => "I",
"İ" => "I",
"Ï" => "I",
"Ỉ" => "I",
"Ǐ" => "I",
"Ị" => "I",
"Į" => "I",
"Ȋ" => "I",
"Ḭ" => "I",
"Ɨ" => "I",
"Ḯ" => "I",
"Ĵ" => "J",
"Ḱ" => "K",
"Ǩ" => "K",
"Ḵ" => "K",
"Ƙ" => "K",
"Ḳ" => "K",
"Ķ" => "K",
"Ḻ" => "L",
"Ḷ" => "L",
"Ļ" => "L",
"Ḽ" => "L",
"Ľ" => "L",
"Ŀ" => "L",
"Ł" => "L",
"Ḹ" => "L",
"Ḿ" => "M",
"Ṁ" => "M",
"Ṃ" => "M",
"Ɯ" => "M",
"Ǹ" => "N",
"Ń" => "N",
"Ñ" => "N",
"Ṅ" => "N",
"Ň" => "N",
"Ŋ" => "N",
"Ɲ" => "N",
"Ṇ" => "N",
"Ņ" => "N",
"Ṋ" => "N",
"Ṉ" => "N",
"Ƞ" => "N",
"Ò" => "O",
"Ó" => "O",
"Ô" => "O",
"Õ" => "O",
"Ō" => "O",
"Ŏ" => "O",
"Ȍ" => "O",
"Ȏ" => "OE",
"Ơ" => "O",
"Ǫ" => "O",
"Ọ" => "O",
"Ɵ" => "O",
"Ồ" => "O",
"Ố" => "O",
"Ỗ" => "O",
"Ổ" => "O",
"Ȱ" => "O",
"Ȫ" => "O",
"Ȭ" => "O",
"Ṍ" => "O",
"Ṏ" => "O",
"Ṑ" => "O",
"Ṓ" => "O",
"Ờ" => "O",
"Ớ" => "O",
"Ỡ" => "O",
"Ở" => "O",
"Ǭ" => "O",
"Ộ" => "O",
"Ɔ" => "O",
"Ǿ" => "OE",
"Œ" => "OE",
"Ṕ" => "P",
"Ṗ" => "P",
"Ƥ" => "P",
"Ŕ" => "R",
"Ṙ" => "R",
"Ř" => "R",
"Ȑ" => "R",
"Ȓ" => "R",
"Ṛ" => "R",
"Ŗ" => "R",
"Ṟ" => "R",
"Ṝ" => "R",
"Ʀ" => "R",
"Ś" => "S",
"Ŝ" => "S",
"Ṡ" => "S",
"Š" => "S",
"Ṣ" => "S",
"Ș" => "S",
"Ş" => "S",
"Ṥ" => "S",
"Ṧ" => "S",
"Ṩ" => "S",
"Ṫ" => "T",
"Ť" => "T",
"Ƭ" => "T",
"Ʈ" => "T",
"Ṭ" => "T",
"Ț" => "T",
"Ţ" => "T",
"Ṱ" => "T",
"Ṯ" => "T",
"Ŧ" => "T",
"Ù" => "U",
"Ú" => "U",
"Û" => "U",
"Ũ" => "U",
"Ū" => "U",
"Ŭ" => "U",
"Ủ" => "U",
"Ů" => "U",
"Ű" => "U",
"Ǔ" => "U",
"Ȕ" => "U",
"Ȗ" => "U",
"Ư" => "U",
"Ụ" => "U",
"Ṳ" => "U",
"Ų" => "U",
"Ṷ" => "U",
"Ṵ" => "U",
"Ṹ" => "U",
"Ṻ" => "U",
"Ǜ" => "U",
"Ǘ" => "U",
"Ǖ" => "U",
"Ǚ" => "U",
"Ừ" => "U",
"Ứ" => "U",
"Ữ" => "U",
"Ử" => "U",
"Ự" => "U",
"Ü" => "UE",
"Ṽ" => "V",
"Ṿ" => "V",
"Ʋ" => "V",
"Ẁ" => "W",
"Ẃ" => "W",
"Ŵ" => "W",
"Ẇ" => "W",
"Ẅ" => "W",
"Ẉ" => "W",
"Ẋ" => "X",
"Ẍ" => "X",
"Ỳ" => "Y",
"Ý" => "Y",
"Ŷ" => "Y",
"Ỹ" => "Y",
"Ȳ" => "Y",
"Ẏ" => "Y",
"Ÿ" => "Y",
"Ỷ" => "Y",
"Ƴ" => "Y",
"Ỵ" => "Y",
"Ź" => "Z",
"Ẑ" => "Z",
"Ż" => "Z",
"Ž" => "Z",
"Ȥ" => "Z",
"Ẓ" => "Z",
"Ẕ" => "Z",
"Ƶ" => "Z",
"à" => "a",
"á" => "a",
"â" => "a",
"ã" => "a",
"ā" => "a",
"ă" => "a",
"ȧ" => "a",
"ả" => "a",
"å" => "a",
"ǎ" => "a",
"ȁ" => "a",
"ȃ" => "a",
"ạ" => "a",
"ḁ" => "a",
"ẚ" => "a",
"ầ" => "a",
"ấ" => "a",
"ẫ" => "a",
"ẩ" => "a",
"ằ" => "a",
"ắ" => "a",
"ẵ" => "a",
"ẳ" => "a",
"ǡ" => "a",
"ǟ" => "a",
"ǻ" => "a",
"ậ" => "a",
"ặ" => "a",
"ǽ" => "ae",
"ä" => "ae",
"ḃ" => "b",
"ɓ" => "b",
"ḅ" => "b",
"ḇ" => "b",
"ƀ" => "b",
"ƃ" => "b",
"ƅ" => "b",
"c" => "c",
"ć" => "c",
"ĉ" => "c",
"ċ" => "c",
"č" => "c",
"ƈ" => "c",
"ç" => "c",
"ḉ" => "c",
"ḍ" => "d",
"ḏ" => "d",
"ḑ" => "d",
"ḓ" => "d",
"ď" => "d",
"đ" => "d",
"ƌ" => "d",
"ȡ" => "d",
"è" => "e",
"é" => "e",
"ê" => "e",
"ẽ" => "e",
"ē" => "e",
"ĕ" => "e",
"ė" => "e",
"ë" => "e",
"ě" => "e",
"ȅ" => "e",
"ȇ" => "e",
"ẹ" => "e",
"ȩ" => "e",
"ę" => "e",
"ḙ" => "e",
"ề" => "e",
"ế" => "e",
"ễ" => "e",
"ể" => "e",
"ḕ" => "e",
"ḗ" => "e",
"ệ" => "e",
"ḝ" => "e",
"ǝ" => "e",
"ɛ" => "e",
"ḟ" => "f",
"ƒ" => "f",
"ǵ" => "g",
"ĝ" => "g",
"ḡ" => "g",
"ğ" => "g",
"ġ" => "g",
"ǧ" => "g",
"ɠ" => "g",
"ģ" => "g",
"ǥ" => "g",
"ĥ" => "h",
"ḣ" => "h",
"ḧ" => "h",
"ȟ" => "h",
"ƕ" => "h",
"ḥ" => "h",
"ḩ" => "h",
"ḫ" => "h",
"ẖ" => "h",
"ħ" => "h",
"ì" => "i",
"í" => "i",
"î" => "i",
"ĩ" => "i",
"ī" => "i",
"ĭ" => "i",
"ı" => "i",
"ï" => "i",
"ỉ" => "i",
"ǐ" => "i",
"ị" => "i",
"į" => "i",
"ȉ" => "i",
"ȋ" => "i",
"ḭ" => "i",
"ɨ" => "i",
"ḯ" => "i",
"ĵ" => "j",
"ǰ" => "j",
"ḱ" => "k",
"ǩ" => "k",
"ḵ" => "k",
"ƙ" => "k",
"ḳ" => "k",
"ķ" => "k",
"ĺ" => "l",
"ḻ" => "l",
"ḷ" => "l",
"ļ" => "l",
"ḽ" => "l",
"ľ" => "l",
"ŀ" => "l",
"ł" => "l",
"ƚ" => "l",
"ḹ" => "l",
"ȴ" => "l",
"ḿ" => "m",
"ṁ" => "m",
"ṃ" => "m",
"ɯ" => "m",
"ǹ" => "n",
"ń" => "n",
"ñ" => "n",
"ṅ" => "n",
"ň" => "n",
"ŋ" => "n",
"ɲ" => "n",
"ṇ" => "n",
"ņ" => "n",
"ṋ" => "n",
"ṉ" => "n",
"ʼn" => "n",
"ƞ" => "n",
"ȵ" => "n",
"ò" => "o",
"ó" => "o",
"ô" => "o",
"õ" => "o",
"ō" => "o",
"ŏ" => "o",
"ȯ" => "o",
"ỏ" => "o",
"ő" => "o",
"ǒ" => "o",
"ȍ" => "o",
"ȏ" => "o",
"ơ" => "o",
"ǫ" => "o",
"ọ" => "o",
"ɵ" => "o",
"ồ" => "o",
"ố" => "o",
"ỗ" => "o",
"ổ" => "o",
"ȱ" => "o",
"ȫ" => "o",
"ȭ" => "o",
"ṍ" => "o",
"ṏ" => "o",
"ṑ" => "o",
"ṓ" => "o",
"ờ" => "o",
"ớ" => "o",
"ỡ" => "o",
"ở" => "o",
"ợ" => "o",
"ǭ" => "o",
"ộ" => "o",
"ǿ" => "o",
"ɔ" => "o",
"ø" => "oe",
"œ" => "oe",
"ṕ" => "p",
"ṗ" => "p",
"ƥ" => "p",
"ŕ" => "p",
"ṙ" => "p",
"ř" => "p",
"ȑ" => "p",
"ȓ" => "p",
"ṛ" => "p",
"ŗ" => "p",
"ṟ" => "p",
"ṝ" => "p",
"ś" => "s",
"ŝ" => "s",
"ṡ" => "s",
"š" => "s",
"ṣ" => "s",
"ș" => "s",
"ş" => "s",
"ṥ" => "s",
"ṧ" => "s",
"ṩ" => "s",
"ß" => "ss",
"ẛ" => "t",
"ṫ" => "t",
"ẗ" => "t",
"ť" => "t",
"ƭ" => "t",
"ʈ" => "t",
"ƫ" => "t",
"ṭ" => "t",
"ț" => "t",
"ţ" => "t",
"ṱ" => "t",
"ṯ" => "t",
"ŧ" => "t",
"ȶ" => "t",
"ù" => "u",
"ú" => "u",
"û" => "u",
"ũ" => "u",
"ū" => "u",
"ŭ" => "u",
"ủ" => "u",
"ů" => "u",
"ű" => "u",
"ǔ" => "u",
"ȕ" => "u",
"ȗ" => "u",
"ư" => "u",
"ụ" => "u",
"ṳ" => "u",
"ų" => "u",
"ṷ" => "u",
"ṵ" => "u",
"ṹ" => "u",
"ṻ" => "u",
"ǖ" => "u",
"ǜ" => "u",
"ǘ" => "u",
"ǚ" => "u",
"ừ" => "u",
"ứ" => "u",
"ữ" => "u",
"ử" => "u",
"ự" => "u",
"ṿ" => "u",
"ü" => "ue",
"ṽ" => "v",
"ẁ" => "w",
"ẃ" => "w",
"ŵ" => "w",
"ẇ" => "w",
"ẅ" => "w",
"ẘ" => "w",
"ẉ" => "w",
"ẋ" => "x",
"ẍ" => "x",
"ỳ" => "y",
"ý" => "y",
"ŷ" => "y",
"ỹ" => "y",
"ȳ" => "y",
"ẏ" => "y",
"ÿ" => "y",
"ỷ" => "y",
"ẙ" => "y",
"ƴ" => "y",
"ỵ" => "y",
"ź" => "z",
"ẑ" => "z",
"ż" => "z",
"ž" => "z",
"ȥ" => "z",
"ẓ" => "z",
"ẕ" => "z",
"ƶ" => "z",
"¨" => "",
"'" => "-",
"’" => "-",
"΅" => "",
"΄" => "",
"ͺ" => "",
"–" => "-",
"᾿" => "",
"῾" => "",
"῍" => "",
"῝" => "",
"῎" => "",
"῞" => "",
"῏" => "",
"῟" => "",
"῀" => "",
"῁" => "",
"΅" => "",
"`" => "",
"῭" => "",
"᾽" => "",
"ἀ" => "a",
"ἁ" => "a",
"ἂ" => "a",
"ἃ" => "a",
"ἄ" => "a",
"ἅ" => "a",
"ἆ" => "a",
"ἇ" => "a",
"ᾀ" => "a",
"ᾁ" => "a",
"ᾂ" => "a",
"ᾃ" => "a",
"ᾄ" => "a",
"ᾅ" => "a",
"ᾆ" => "a",
"ᾇ" => "a",
"ὰ" => "a",
"ά" => "a",
"ᾰ" => "a",
"ᾱ" => "a",
"ᾲ" => "a",
"ᾳ" => "a",
"ᾴ" => "a",
"ᾶ" => "a",
"ᾷ" => "a",
"ა" => "a",
"Ἀ" => "A",
"Ἁ" => "A",
"Ἂ" => "A",
"Ἃ" => "A",
"Ἄ" => "A",
"Ἅ" => "A",
"Ἆ" => "A",
"Ἇ" => "A",
"ᾈ" => "A",
"ᾉ" => "A",
"ᾊ" => "A",
"ᾋ" => "A",
"ᾌ" => "A",
"ᾍ" => "A",
"ᾎ" => "A",
"ᾏ" => "A",
"Ᾰ" => "A",
"Ᾱ" => "A",
"Ὰ" => "A",
"Ά" => "A",
"ᾼ" => "A",
"ą" => "a",
"æ" => "ae",
"ბ" => "b",
"ჩ" => "ch",
"ჭ" => "ch",
"დ" => "d",
"ð" => "d",
"Ð" => "D",
"ძ" => "dz",
"ἐ" => "e",
"ἑ" => "e",
"ἒ" => "e",
"ἓ" => "e",
"ἔ" => "e",
"ἕ" => "e",
"ὲ" => "e",
"έ" => "e",
"ე" => "e",
"Ἐ" => "E",
"Ἑ" => "E",
"Ἒ" => "E",
"Ἓ" => "E",
"Ἔ" => "E",
"Ἕ" => "E",
"Έ" => "E",
"Ὲ" => "E",
"გ" => "g",
"ღ" => "gh",
"ჰ" => "h",
"Ħ" => "H",
"ἠ" => "i",
"ἡ" => "i",
"ἢ" => "i",
"ἣ" => "i",
"ἤ" => "i",
"ἥ" => "i",
"ἦ" => "i",
"ἧ" => "i",
"ᾐ" => "i",
"ᾑ" => "i",
"ᾒ" => "i",
"ᾓ" => "i",
"ᾔ" => "i",
"ᾕ" => "i",
"ᾖ" => "i",
"ᾗ" => "i",
"ὴ" => "i",
"ή" => "i",
"ῂ" => "i",
"ῃ" => "i",
"ῄ" => "i",
"ῆ" => "i",
"ῇ" => "i",
"ἰ" => "i",
"ἱ" => "i",
"ἲ" => "i",
"ἳ" => "i",
"ἴ" => "i",
"ἵ" => "i",
"ἶ" => "i",
"ἷ" => "i",
"ὶ" => "i",
"ί" => "i",
"ῐ" => "i",
"ῑ" => "i",
"ῒ" => "i",
"ΐ" => "i",
"ῖ" => "i",
"ῗ" => "i",
"ი" => "i",
"Ἠ" => "I",
"Ἡ" => "I",
"Ἢ" => "I",
"Ἣ" => "I",
"Ἤ" => "I",
"Ἥ" => "I",
"Ἦ" => "I",
"Ἧ" => "I",
"ᾘ" => "I",
"ᾙ" => "I",
"ᾚ" => "I",
"ᾛ" => "I",
"ᾜ" => "I",
"ᾝ" => "I",
"ᾞ" => "I",
"ᾟ" => "I",
"Ὴ" => "I",
"Ή" => "I",
"ῌ" => "I",
"Ἰ" => "I",
"Ἱ" => "I",
"Ἲ" => "I",
"Ἳ" => "I",
"Ἴ" => "I",
"Ἵ" => "I",
"Ἶ" => "I",
"Ἷ" => "I",
"Ῐ" => "I",
"Ῑ" => "I",
"Ὶ" => "I",
"Ί" => "I",
"ij" => "ij",
"IJ" => "IJ",
"ჯ" => "j",
"კ" => "k",
"ქ" => "k",
"ხ" => "kh",
"ĸ" => "k",
"ლ" => "l",
"Ĺ" => "K",
"Ľ" => "K",
"Ŀ" => "K",
"Ļ" => "K",
"მ" => "m",
"ნ" => "n",
"ὀ" => "o",
"ὁ" => "o",
"ὂ" => "o",
"ὃ" => "o",
"ὄ" => "o",
"ὅ" => "o",
"ὸ" => "o",
"ό" => "o",
"ὠ" => "o",
"ὡ" => "o",
"ὢ" => "o",
"ὣ" => "o",
"ὤ" => "o",
"ὥ" => "o",
"ὦ" => "o",
"ὧ" => "o",
"ᾠ" => "o",
"ᾡ" => "o",
"ᾢ" => "o",
"ᾣ" => "o",
"ᾤ" => "o",
"ᾥ" => "o",
"ᾦ" => "o",
"ᾧ" => "o",
"ὼ" => "o",
"ώ" => "o",
"ῲ" => "o",
"ῳ" => "o",
"ῴ" => "o",
"ῶ" => "o",
"ῷ" => "o",
"ო" => "o",
"Ὀ" => "O",
"Ὁ" => "O",
"Ὂ" => "O",
"Ὃ" => "O",
"Ὄ" => "O",
"Ὅ" => "O",
"Ὸ" => "O",
"Ό" => "O",
"Ὠ" => "O",
"Ὡ" => "O",
"Ὢ" => "O",
"Ὣ" => "O",
"Ὤ" => "O",
"Ὥ" => "O",
"Ὦ" => "O",
"Ὧ" => "O",
"ᾨ" => "O",
"ᾩ" => "O",
"ᾪ" => "O",
"ᾫ" => "O",
"ᾬ" => "O",
"ᾭ" => "O",
"ᾮ" => "O",
"ᾯ" => "O",
"Ὼ" => "O",
"Ώ" => "O",
"ῼ" => "O",
"Ő" => "O",
"ø" => "o",
"Ø" => "O",
"ö" => "oe",
"Ö" => "Oe",
"პ" => "p",
"ფ" => "p",
"ყ" => "q",
"ῤ" => "r",
"ῥ" => "r",
"რ" => "r",
"Ῥ" => "R",
"ს" => "s",
"შ" => "sh",
"ſ" => "ss",
"თ" => "t",
"ტ" => "t",
"ც" => "ts",
"წ" => "ts",
"უ" => "u",
"ვ" => "v",
"ὐ" => "y",
"ὑ" => "y",
"ὒ" => "y",
"ὓ" => "y",
"ὔ" => "y",
"ὕ" => "y",
"ὖ" => "y",
"ὗ" => "y",
"ὺ" => "y",
"ύ" => "y",
"ῠ" => "y",
"ῡ" => "y",
"ῢ" => "y",
"ΰ" => "y",
"ῦ" => "y",
"ῧ" => "y",
"Ὑ" => "Y",
"Ὓ" => "Y",
"Ὕ" => "Y",
"Ὗ" => "Y",
"Ῠ" => "Y",
"Ῡ" => "Y",
"Ὺ" => "Y",
"Ύ" => "Y",
"ზ" => "z",
"ჟ" => "zh",
"Þ" => "TH",
"Α" => "A",
"α" => "a",
"Ά" => "A",
"ά" => "a",
"Β" => "B",
"β" => "b",
"Γ" => "G",
"γ" => "g",
"Δ" => "D",
"δ" => "d",
"Ε" => "E",
"ε" => "e",
"Έ" => "E",
"έ" => "e",
"Ζ" => "Z",
"ζ" => "z",
"Η" => "I",
"η" => "i",
"Ή" => "I",
"ή" => "i",
"Θ" => "TH",
"θ" => "th",
"Ι" => "I",
"ι" => "i",
"Ί" => "I",
"ί" => "i",
"Ϊ" => "I",
"ϊ" => "i",
"ΐ" => "i",
"Κ" => "K",
"κ" => "k",
"Λ" => "L",
"λ" => "l",
"Μ" => "M",
"μ" => "m",
"Ν" => "N",
"ν" => "n",
"Ξ" => "KS",
"ξ" => "ks",
"Ο" => "O",
"ο" => "o",
"Ό" => "O",
"ό" => "o",
"Π" => "P",
"π" => "p",
"ρ" => "r",
"Ρ" => "R",
"Σ" => "S",
"σ" => "s",
"ς" => "s",
"Τ" => "T",
"τ" => "t",
"Υ" => "Y",
"υ" => "y",
"Ύ" => "Y",
"ύ" => "y",
"Ϋ" => "Y",
"ϋ" => "y",
"ΰ" => "y",
"Φ" => "F",
"φ" => "f",
"Χ" => "X",
"χ" => "x",
"Ψ" => "PS",
"ψ" => "ps",
"Ω" => "O",
"ω" => "o",
"Ώ" => "O",
"ώ" => "o",
"а" => "A",
"А" => "A",
"б" => "B",
"Б" => "B",
"в" => "V",
"В" => "V",
"г" => "G",
"Г" => "G",
"д" => "D",
"Д" => "D",
"е" => "E",
"Е" => "E",
"ё" => "E",
"Ё" => "E",
"ж" => "ZH",
"Ж" => "ZH",
"з" => "Z",
"З" => "Z",
"и" => "I",
"И" => "I",
"й" => "I",
"Й" => "I",
"к" => "K",
"К" => "K",
"л" => "L",
"Л" => "L",
"м" => "M",
"М" => "M",
"н" => "N",
"Н" => "N",
"о" => "O",
"О" => "O",
"п" => "P",
"П" => "P",
"р" => "R",
"Р" => "R",
"с" => "S",
"С" => "S",
"т" => "T",
"Т" => "T",
"у" => "U",
"У" => "U",
"ф" => "F",
"Ф" => "F",
"х" => "KH",
"Х" => "KH",
"ц" => "TS",
"Ц" => "TS",
"ч" => "CH",
"Ч" => "CH",
"ш" => "SH",
"Ш" => "SH",
"щ" => "SHCH",
"Щ" => "SHCH",
"ъ" => "",
"Ъ" => "",
"ы" => "Y",
"Ы" => "Y",
"ь" => "",
"Ь" => "",
"э" => "E",
"Э" => "E",
"ю" => "YU",
"Ю" => "YU",
"я" => "YA",
"Я" => "YA",
"א" => "A",
"ב" => "B",
"ג" => "G",
"ד" => "D",
"ה" => "Ha",
"ו" => "V",
"ז" => "Z",
"ח" => "H",
"ט" => "T",
"י" => "I",
"כ" => "K",
"ך" => "H",
"ל" => "L",
"מ" => "M",
"ם" => "M",
"נ" => "N",
"ן" => "N",
"ס" => "S",
"פ" => "P",
"ף" => "F",
"ק" => "K",
"ר" => "R",
"ש" => "SH",
"ע" => "O",
"צ" => "TZ",
"ץ" => "TZ"
);
/**
* translates characters with diacritical marks to simple ones
*
* @param string $string
* @return string
*/
static function filter($string) {
// strip/convert a few specific characters
$string = strtr($string, zenphoto_seo::$specialchars);
if (getOption('zenphoto_seo_lowercase'))
$string = strtolower($string);
$string = preg_replace("/\s+/", "-", $string);
$string = preg_replace("/[^a-zA-Z0-9_.-]/", "-", $string);
$string = preg_replace("/--+/", "-", $string);
return $string;
}
static function js($string) {
$xlate = array();
foreach (zenphoto_seo::$specialchars as $from => $to) {
if (array_key_exists($to, $xlate)) {
$xlate[$to] .= $from;
} else {
$xlate[$to] = $from;
}
}
$js = '
function seoFriendlyJS(fname) {
fname=fname.trim();
fname=fname.replace(/\s+\.\s*/,".");
';
foreach ($xlate as $to => $from) {
$js .= " fname = fname.replace(/[" . $from . "]/g, '" . $to . "');\n";
}
if (getOption('zenphoto_seo_lowercase')) {
$js .= " fname = fname.toLowerCase();\n";
}
$js .= "
fname = fname.replace(/\s+/g, '-');
fname = fname.replace(/[^a-zA-Z0-9_.-]/g, '-');
fname = fname.replace(/--*/g, '-');
return fname;
}\n";
return $js;
}
}