Я нашел следующую функцию для создания ссылок на SEO из имен моих статей и категорий. Проблема, с которой я столкнулась, связана с испанскими версиями, поскольку они имеют буквы с акцентом.Замените акцентированные буквы как часть существующей функции SEO в PHP
Функция отлично работает с английским, но когда я переключаюсь на испанский, функция удаляет все буквы с акцентом из ссылок SEO. То, что я хочу сделать вместо этого, чтобы заменить их на их без акцента версии
GENERATE SEO URLS */
function generate_seo_link($input,$replace = '-',$remove_words = true,$words_array = array())
{
//make it lowercase, remove punctuation, remove multiple/leading/ending spaces
$return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($input))));
//remove words, if not helpful to seo
//i like my defaults list in remove_words(), so I wont pass that array
if($remove_words) { $return = remove_words($return,$replace,$words_array); }
//convert the spaces to whatever the user wants
//usually a dash or underscore..
//...then return the value.
return str_replace(' ',$replace,$return);
}
/* takes an input, scrubs unnecessary words */
function remove_words($input,$replace,$words_array = array(),$unique_words = true)
{
//separate all words based on spaces
$input_array = explode(' ',$input);
//create the return array
$return = array();
//loops through words, remove bad words, keep good ones
foreach($input_array as $word)
{
//if it's a word we should add...
if(!in_array($word,$words_array) && ($unique_words ? !in_array($word,$return) : true))
{
$return[] = $word;
}
}
//return good words separated by dashes
return implode($replace,$return);
}
Затем я попытался создать отдельную функцию, чтобы заменить акцент письма, которые я планировал использовать вместе с указанной выше функции.
function convertAccented($str)
{ $accented = array("á", "é", "ó", "ú", "ñ","í");
$cleanlink = array("a", "e", "o", "u", "n","i");
return str_replace($accented, $cleanlink, $str);
}
Однако, когда я пытаюсь объединить обе функции, акцентированные буквы, по-прежнему удаляются вместо заменить их без акцента коллег.
Я уже пытался convertAccented(generate_seo_link($categoryname));
и generate_seo_link(convertAccented($categoryname));
без успеха ...
Я также попытался заменить strtolower($input)
на mb_strtolower($input, 'UTF-8')
в первой функции, а не предложили в другом Q & А еще никакого успеха.
Мне нужна помощь в определении того, как включить изменение акцента на буквы без акцента из первой функции выше.
Например, категория "Tarjetas de Crédito" будет преобразована в "tarjetas-de-crdito" без последнего "e". Вместо «tarjetas-de-credito»
Я уже просмотрел сайт и нашел множество связанных вопросов, но они не совсем отвечают на мой вопрос.
спасибо за ваш ответ. Как указано в деталях моего вопроса, я уже нашел несколько функций для преобразования символов с акцентом на английские символы. Тем не менее, проблема, с которой я столкнулась, заключалась в том, что я использовал две разные функции в своем скрипте, одну для преобразования текстовых полей в ссылки SEO, а другую - для замены символов. По какой-то причине я не мог заставить их работать вместе. – CHAVOUSA