Вырезаем из строки мусорные символы (Рейтинг: +7)
Часто приходится вырезать из имён такие символы как сердечки,вопросы,знаки (♥�►◄) и т.д. Стандартного решения я не нашёл, google тоже не помог. Пришлось написать самому вот такую функцию/
Пример
Добавил: orel
14.02.2013 / 18:08<?php function utf8_str_split($str) { // place each character of the string into and array $split=1; $array = array(); for ( $i=0; $i < strlen( $str ); ){ $value = ord($str[$i]); if($value > 127){ if($value >= 192 && $value <= 223) $split=2; elseif($value >= 224 && $value <= 239) $split=3; elseif($value >= 240 && $value <= 247) $split=4; }else{ $split=1; } $key = NULL; for ( $j = 0; $j < $split; $j++, $i++ ) { $key .= $str[$i]; } array_push( $array, $key ); } return $array; } /** * Функция вырезки всех лишних символов * @param <type> $str * @return <type> */ function clearstr($str){ $sru = 'ёйцукенгшщзхъфывапролджэячсмитьбю'; $s1 = array_merge(utf8_str_split($sru), utf8_str_split(strtoupper($sru)), range('A', 'Z'), range('a','z'), range('0', '9'), array('&',' ','#',';','%','?',':','(',')','-','_','=','+','[',']',',','.','/')); $codes = array(); for ($i=0; $i<count($s1); $i++){ $codes[] = ord($s1[$i]); } $str_s = utf8_str_split($str); for ($i=0; $i<count($str_s); $i++){ if (!in_array(ord($str_s[$i]), $codes)){ $str = str_replace($str_s[$i], '', $str); } } return $str; } ?>
Пример
echo clearstr('t♥e�s►t◄');Результат
test
Рейтинг:
+7
Просмотры: 1702Комментарии (5) »