imho.ws |
![]() |
![]() |
![]() |
# 1 |
Junior Member
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118
![]() |
PHP удаление мусора из переменной.
Есть функция
function tag_SIMSEARCHES($num_similar) { global $similar_row; $result = ''; $similar_row = arrayUniqueByRow($similar_row, 1); if ( !empty($similar_row) ){ foreach ($similar_row as $values) { if(preg_match("/by [a-z]+$/i",$values[1])) continue; $uri = make_uri( S_SEARCH, array (P_KW => $values[1] ) ); $first_let = strtolower( substr($values[1],0,1) ); $result .= "<a href='/$first_let$uri'> $values[1] </a>, "; } $result = trim($result); $result = trim($result,','); } return $result; } Которая формирует линки на сайте. Иногда в линках бывает мусор - (небуквенно цифровые символы) Вопрос как очистить $values[1] от мусора? Пробовал делать так - foreach ($similar_row as $values) { $values[1]=preg_replace('~[^0-9a-z\(\)\/+\-_\[\]",\|\*\(\)!\~@#$%&;{}<>:\'\~\. ]~i',"",$values[1]); НЕ помогает.
__________________
каждому по вере |
![]() |
![]() |
# 2 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
С одной стороны говорите что все надо исключить кроме букв и цифр, а с другой стороны стольк исключений добавляете.
Код:
$values[1]=preg_replace('~[^\d\w]~i', "", $values[1]); P.S. Жуткий код.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |
![]() |
# 3 |
Junior Member
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118
![]() |
Сработало, но нужно формировать анкоры вида
word1 word2 word3 - ваша регулярка вобще все пробелы удаляет, а нужно вырезать весь мусора и оставить только один пробел между словами.
__________________
каждому по вере |
![]() |
![]() |
# 4 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Этого не было обозначено изначально:
Код:
$values[1] = preg_replace(array('~[^\d\w ]~i', '~ {2,}~'), array('', ' '), $values[1]);
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |
![]() |
# 5 |
Junior Member
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118
![]() |
Все замечательно работает и мусор вырезается кроме нижнего подчеркивания "_", оно почему то не вырезается =(
И нужно удалять знак пробела в самом начале (перед анкором) если он там появился после обработки.
__________________
каждому по вере Последний раз редактировалось GrOgy; 21.03.2012 в 09:25. |
![]() |
![]() |
# 6 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Код:
$values[1] = preg_replace(array('~[^\da-zA-Z ]~i', '~ {2,}~'), array('', ' '), $values[1]);
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |
![]() |
# 7 |
Junior Member
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118
![]() |
Да благодарю, все работает, но есть одна загвоздка.
Иногда нужно обрабатывать строки вида. _150 Gamehouse(Games) Pack, на выходе нужно получить 150 Gamehouse Games Pack, но регулярка делает - 150 GamehouseGamesPack. Если поставить пробел в регулярке - array(' ', ' '), то получается - пробел150 Gamehouse Games Pack, что тоже недопустимо. Решил сделать вот такую регулярку - Код:
$values[1] = ltrim(preg_replace(array('~[^\da-zA-Z ]~i', '~ {2,}~'), array(' ', ' '), $values[1]));
__________________
каждому по вере |
![]() |
![]() |
# 8 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Аппетит призодит во время еды?
Код:
$values[1] = preg_replace(array('~^[^\da-zA-Z ]~i', '~[^\da-zA-Z ]~i', '~ {2,}~'), array('', ' ', ' '), $values[1]); Код:
$values[1] = implode(' ', preg_split('~[^\da-zA-Z]+~i', $values[1], -1, PREG_SPLIT_NO_EMPTY));
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |