PDA

Orijinalini grmek iin tklaynz : Gelitirilmi Seo Url Fonksiyonu Nedir?



optimusprime
08.Aralk.2014, 22:04
url_slug fonksiyonu:



<?php

/**

* Create a web friendly URL slug from a string.

*

* Although supported, transliteration is discouraged because

* 1) most web browsers support UTF-8 characters in URLs

* 2) transliteration causes a loss of information

*

* @author Sean Murphy <[email protected]>

* @copyright Copyright 2012 Sean Murphy. All rights reserved.

* @license https://creativecommons.org/publicdomain/zero/1.0/

*

* @param string $str

* @param array $options

* @return string

*/

function url_slug($str, $options = array()) {

// Make sure string is in UTF-8 and strip invalid UTF-8 characters

$str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings());



$defaults = array(

'delimiter' => '-',

'limit' => null,

'lowercase' => true,

'replacements' => array(),

'transliterate' => false,

);



// Merge options

$options = array_merge($defaults, $options);



$char_map = array(

// Latin

'' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'AE', '' => 'C',

'' => 'E', '' => 'E', '' => 'E', '' => 'E', '' => 'I', '' => 'I', '' => 'I', '' => 'I',

'Ð' => 'D', '' => 'N', '' => 'O', '' => 'O', '' => 'O', '' => 'O', '' => 'O', 'Ő' => 'O',

'' => 'O', '' => 'U', '' => 'U', '' => 'U', '' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH',

'' => 'ss',

'' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'ae', '' => 'c',

'' => 'e', '' => 'e', '' => 'e', '' => 'e', '' => 'i', '' => 'i', '' => 'i', '' => 'i',

'ð' => 'd', '' => 'n', '' => 'o', '' => 'o', '' => 'o', '' => 'o', '' => 'o', '€˜' => 'o',

'' => 'o', '' => 'u', '' => 'u', '' => 'u', '' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th',

'' => 'y',



// Latin symbols

'' => '(c)',



// Greek

'€˜' => 'A', '€™' => 'B', '€œ' => 'G', '€' => 'D', '€' => 'E', '€“' => 'Z', '€”' => 'H', 'œ' => '8',

'„' => 'I', 'š' => 'K', '€' => 'L', '“' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ÿ' => 'O', '*' => 'P',

'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',

'€*' => 'A', '*' => 'E', '*' => 'I', '’' => 'O', 'Ύ' => 'Y', '€' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',

'Ϋ' => 'Y',

'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',

'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', '‚' => 'p',

'ρ' => 'r', '’' => 's', '€' => 't', '€' => 'y', '€*' => 'f', '€' => 'x', '*' => 'ps', '€' => 'w',

'ά' => 'a', '*' => 'e', 'ί' => 'i', '’' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', '€š' => 's',

'*' => 'i', 'ΰ' => 'y', '€' => 'y', 'ΐ' => 'i',



// Turkish

'' => 'S', '' => 'I', '' => 'C', '' => 'U', '' => 'O', '' => 'G',

'' => 's', '' => 'i', '' => 'c', '' => 'u', '' => 'o', '' => 'g',



// Russian

'А' => 'A', '€˜' => 'B', '€™' => 'V', '€œ' => 'G', '€' => 'D', '€' => 'E', 'Ё' => 'Yo', '€“' => 'Zh',

'€”' => 'Z', 'œ' => 'I', '„' => 'J', 'š' => 'K', '€' => 'L', '“' => 'M', 'Н' => 'N', 'О' => 'O',

'Ÿ' => 'P', '*' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',

'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', '*' => 'E', 'Ю' => 'Yu',

'Я' => 'Ya',

'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', '€˜' => 'yo', 'ж' => 'zh',

'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',

'п' => 'p', '‚' => 'r', 'с' => 's', '€š' => 't', '’' => 'u', '€' => 'f', '€' => 'h', '€*' => 'c',

'€' => 'ch', '*' => 'sh', '€' => 'sh', '*' => '', '€' => 'y', '’' => '', 'э' => 'e', 'ю' => 'yu',

'я' => 'ya',



// Ukrainian

'€' => 'Ye', '€*' => 'I', '€' => 'Yi', 'Ґ' => 'G',

'€' => 'ye', '€“' => 'i', '€”' => 'yi', '€˜' => 'g',



// Czech

'’' => 'C', 'Ď' => 'D', 'š' => 'E', '€' => 'N', 'œ' => 'R', '*' => 'S', 'Ť' => 'T', 'Ů' => 'U',

'Ž' => 'Z',

'č' => 'c', 'ď' => 'd', '€' => 'e', '*' => 'n', '„' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',

'ž' => 'z',



// Polish

'€' => 'A', '€*' => 'C', 'œ' => 'e', 'Ł' => 'L', '’' => 'N', '' => 'o', 'š' => 'S', 'Ź' => 'Z',

'Ż' => 'Z',

'€' => 'a', '€' => 'c', '„' => 'e', '€š' => 'l', '€' => 'n', '' => 'o', '€' => 's', 'ź' => 'z',

'ż' => 'z',



// Latvian

'‚' => 'A', '’' => 'C', '€™' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', '€' => 'N',

'*' => 'S', 'Ū' => 'u', 'Ž' => 'Z',

'ā' => 'a', 'č' => 'c', '€œ' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', '€*' => 'n',

'š' => 's', 'ū' => 'u', 'ž' => 'z'

);



// Make custom replacements

$str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);



// Transliterate characters to ASCII

if ($options['transliterate']) {

$str = str_replace(array_keys($char_map), $char_map, $str);

}



// Replace non-alphanumeric characters with our delimiter

$str = preg_replace('/[^\p{L}\p{Nd}]+/u', $options['delimiter'], $str);



// Remove duplicate delimiters

$str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);



// Truncate slug to max. characters

$str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');



// Remove delimiter from ends

$str = trim($str, $options['delimiter']);



return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;

}



rnek kullanm



<?php

include('url_slug.php');

header('Content-type: text/plain; charset=utf-8');



// Basic usage

echo "This is an example string. Nothing fancy." . "\n";

echo url_slug("This is an example string. Nothing fancy.") . "\n\n";



// Example using French with unwanted characters ('?)

echo "Qu'en est-il franais? a marche alors?" . "\n";

echo url_slug("Qu'en est-il franais? a marche alors?") . "\n\n";



// Example using transliteration

echo "Ч€šо дела€š’, если я не €о€’, UTF-8?" . "\n";

echo url_slug("Ч€šо дела€š’, если я не €о€’, UTF-8?", array('transliterate' => true)) . "\n\n";



// Example using transliteration on an unsupported language

echo "מ€ אם א*„ “א ר€צ€ UTF-8 ת€€„ם?" . "\n";

echo url_slug("מ€ אם א*„ “א ר€צ€ UTF-8 ת€€„ם?", array('transliterate' => true)) . "\n\n";



// Some other options

echo "This is an Example String. What's Going to Happen to Me?" . "\n";

echo url_slug(

"This is an Example String. What's Going to Happen to Me?",

array(

'delimiter' => '_',

'limit' => 40,

'lowercase' => false,

'replacements' => array(

'/\b(an)\b/i' => 'a',

'/\b(example)\b/i' => 'Test'

)

)

);



/*

Output:



This is an example string. Nothing fancy.

this-is-an-example-string-nothing-fancy



Qu'en est-il franais? a marche alors?

qu-en-est-il-franais-a-marche-alors



Ч€šо дела€š’, если я не €о€’, UTF-8?

chto-delat-esli-ya-ne-hochu-utf-8



מ€ אם א*„ “א ר€צ€ UTF-8 ת€€„ם?

מ€-אם-א*„-“א-ר€צ€-utf-8-ת€€„ם



This is an Example String. What's Going to Happen to Me?

This_is_a_Test_String_What_s_Going_to_Ha

*/