текст ни о чем, просто хочется кому-нибудь что-нибудь рассказать =)
подметил особенность что в разных местах у меня урл проверяются совершенно по-разному, что не есть хорошо.
решил стандартизировать и сделать все красиво и на регэкспах. понял что я их потихоньку забываю, что есть совсем нехорошо =)
решил поставить общее условие везде: урл может содержать символы a-z 0-9 - _ (буквы, цифры, дефис и подчеркивание) и состоит не содержит символов в верхнем регистре. можно было бы пошире рамки сделать, но я решил ограничиться этим.
чтобы проверить валиден ли урл я смотрю чтобы с начала и до конца он содержал только эти символы и их было как минимум 1, регулярка: /^[0-9a-z_\-]+$/ код: preg_match('/^[0-9a-z_\-]+$/',$url);
чтобы исправить урл я перевожу все в нижний регистр заменяю все символы кроме этих на пустую строку, т.е. по регулярке /[^0-9a-z_\-]/ (все символы кроме наших) делаю preg_replace('/[^0-9a-z_\-]/','',strtolower($url))
полностью код получается:
class Url {
static $allowedSymbols = "0-9a-z_\-";
function Correct($url) {
$re = "/[^". Url::$allowedSymbols ."]/";
return preg_replace($re,'',strtolower($url));
}
function Validate($url) {
$re = "/^[". Url::$allowedSymbols ."]+$/";
return preg_match($re,$url);
}
}
т.е. фактически дозволенные символы мы можем выносить в конфиг, а там уже их писать с условием чтобы они составали валидный класс символов для регэксп
p.s. не могу удержаться не вставить картинку )))
