imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 16.03.2012, 05:04     # 1
GrOgy
Junior Member
 
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118

GrOgy Нуль без палочки
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]);
НЕ помогает.
__________________
каждому по вере
GrOgy вне форума  
Старый 17.03.2012, 09:00     # 2
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
С одной стороны говорите что все надо исключить кроме букв и цифр, а с другой стороны стольк исключений добавляете.

Код:
$values[1]=preg_replace('~[^\d\w]~i', "", $values[1]);
должно помочь.

P.S. Жуткий код.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 20.03.2012, 10:46     # 3
GrOgy
Junior Member
 
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118

GrOgy Нуль без палочки
Сработало, но нужно формировать анкоры вида
word1 word2 word3 - ваша регулярка вобще все пробелы удаляет, а нужно вырезать весь мусора и оставить только один пробел между словами.
__________________
каждому по вере
GrOgy вне форума  
Старый 20.03.2012, 19:54     # 4
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Этого не было обозначено изначально:
Код:
$values[1] = preg_replace(array('~[^\d\w ]~i', '~ {2,}~'), array('', ' '), $values[1]);
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 21.03.2012, 08:12     # 5
GrOgy
Junior Member
 
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118

GrOgy Нуль без палочки
Все замечательно работает и мусор вырезается кроме нижнего подчеркивания "_", оно почему то не вырезается =(
И нужно удалять знак пробела в самом начале (перед анкором) если он там появился после обработки.
__________________
каждому по вере

Последний раз редактировалось GrOgy; 21.03.2012 в 09:25.
GrOgy вне форума  
Старый 21.03.2012, 19:22     # 6
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Код:
$values[1] = preg_replace(array('~[^\da-zA-Z ]~i', '~ {2,}~'), array('', ' '), $values[1]);
?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 22.03.2012, 09:43     # 7
GrOgy
Junior Member
 
Регистрация: 17.09.2005
Адрес: St. Petersburg
Сообщения: 118

GrOgy Нуль без палочки
Да благодарю, все работает, но есть одна загвоздка.
Иногда нужно обрабатывать строки вида.

_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]));
Все заработало, но может быть есть более элегантное решение?
__________________
каждому по вере
GrOgy вне форума  
Старый 22.03.2012, 10:35     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Аппетит призодит во время еды?

Код:
$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.
Hubbitus вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.