Я создаю функцию, используя PHP для очистки строки имени.
Итак, у меня есть такие имена:
$name_1 = ' \'Brian O\'Ril"*ley';
$name_2 = ' \' " José Sant\'Anna';
# Output expected:
# Brian O'Rilley
# José Sant'Anna
Мой код функции:
function cleanName($string)
{
# --------------------------------------------------
# Remove everything before first letter and after last letter
# --------------------------------------------------
$string = preg_replace('/^[^A-Za-z0-9]+/','',$string);
# --------------------------------------------------
# Clean spaces
# --------------------------------------------------
$string = htmlentities($string,null,'utf-8');
$string = str_replace(' ',' ',$string);
$string = preg_replace('!\s+!',' ',$string);
$string = html_entity_decode($string);
# --------------------------------------------------
# Replace quotes
# --------------------------------------------------
$string = str_replace(array('`','´','´´','``','"'),'\'',$string);
$string = preg_replace("/'{2,}/","'",$string);
# --------------------------------------------------
# Remove everything but letters, single spaces, simple quotes, and ISO-8859-1 characters
# --------------------------------------------------
$string = preg_replace('/[^A-Za-z0-9 \'\xC0-\xD6\xD8-\xF6\xF8-\xFF]+/u','',$string);
# --------------------------------------------------
# Upper case on fisrt letters
# --------------------------------------------------
$string = ucwords(strtolower($string));
# --------------------------------------------------
# Output
# --------------------------------------------------
return $string;
}
Код выполняет почти все, что мне нужно, НО:
# This one only removes BEFORE - I also need to remove AFTER
$string = preg_replace('/^[^A-Za-z0-9]+/','',$string);
Я действительно изо всех сил пытаюсь найти способ удалить что-либо после последней буквы / цифры.
Может ли кто-нибудь помочь мне с этим? Если до и после он находится на одном регулярном выражении, даже лучше. Любые другие предложения по улучшению моего кода приветствуются!
Спасибо