[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: фильтрация символов в строке
Гость_Alexey
есть строка. в ней много пробелов, новых строк цифр и дат.

хотел почистить в ней нежелательные символы используя коды аск-ов
str_replace('0x2A','',$str);
и понеслась
НО нежелательных символов оказалось больше чем желаемых и я решил наоборот оставить только желаемые. как это лучше сделать?

пробовал сначала перебором символов в массиве
for($i=0;$i<$length;$i++)
{
if(ord($str[$i]) != 10 && ord($str[$i]) <46 && ord($str[$i]) > 57)
str[$i] = '';
}
результат меня не обрадовал - вместо нежелаемых символов ячейки заполнились пустыми значениями, а мне нужно чтоб их вообще не было, как еслиб не бывало вовсе :)
пробовал unset($str[$i]) - тоже не помогло.

перекапываю стринговые функции но идеального для себя решения пока так и не нашел....

в общем спасайте кто может!!!



Спустя 34 минуты, 45 секунд (22.12.2011 - 20:41) Игорь_Vasinsky написал(а):
Цитата
есть строка. в ней много пробелов


ну и str_replace(' ', '', $string);

Спустя 8 минут, 29 секунд (22.12.2011 - 20:50) Guest написал(а):
Цитата (Игорь_Vasinsky @ 22.12.2011 - 17:41)
Цитата
есть строка. в ней много пробелов


ну и str_replace(' ', '', $string);

если совсем коротко....

мне нужно оставить в строке
  • от 0x2F - до 0x39 (цифры и /)
  • 0xA (новая строка)

Спустя 14 минут, 49 секунд (22.12.2011 - 21:05) killer8080 написал(а):
используй регулярки, так в строке останутся только маленькие латинские буквы и цифры.
$str = preg_replace('#[^a-z\d]#', '', $str);

Спустя 9 минут, 48 секунд (22.12.2011 - 21:14) killer8080 написал(а):
Цитата (Guest @ 22.12.2011 - 19:50)
мне нужно оставить в строке
от 0x2F - до 0x39 (цифры и /)
0xA (новая строка)

$str = preg_replace('#[^/\n\d]#', '', $str);

Спустя 6 минут, 59 секунд (22.12.2011 - 21:21) Guest написал(а):
Цитата (killer8080 @ 22.12.2011 - 18:05)
используй регулярки, так в строке останутся только маленькие латинские буквы и цифры.
$str = preg_replace('#[^a-z\d]#', '', $str);

проверил так
$str = preg_replace('#[^0-9\n\/]#', '', $str);
то что надо.

осталась одна проблема - надо либо удалить пустые строки либо любое количество \n идущих подряд преобразовать в один \n

Спустя 1 минута, 40 секунд (22.12.2011 - 21:23) Игорь_Vasinsky написал(а):
кстати да biggrin.gif а я не до пёр tongue.gif


Спустя 4 минуты, 36 секунд (22.12.2011 - 21:28) killer8080 написал(а):
Цитата (Guest @ 22.12.2011 - 20:21)
либо любое количество \n идущих подряд преобразовать в один \n

$str = preg_replace('#[^/\n\d]#', '', $str);
$str = preg_replace('#\n{2,}#', '\n', $str);

Спустя 10 минут, 8 секунд (22.12.2011 - 21:38) Guest написал(а):
поправочка
$str = preg_replace('#[^/\n\d]#', '', $str);
$str = preg_replace('#\n{2,}#', '\n', $str);
иначе сливается в одну строку

кабы их обьединить

Спустя 3 минуты, 29 секунд (22.12.2011 - 21:41) killer8080 написал(а):
Цитата (Guest @ 22.12.2011 - 20:38)
поправочка
$str = preg_replace('#[^/\n\d]#', '', $str);
$str = preg_replace('#\n{2,}#', '\n', $str);

Где поправочка?

Спустя 1 минута, 38 секунд (22.12.2011 - 21:43) Игорь_Vasinsky написал(а):
функция прекрасно работает с массивами

Спустя 2 минуты, 26 секунд (22.12.2011 - 21:45) killer8080 написал(а):
Цитата (Guest @ 22.12.2011 - 20:38)
иначе сливается в одну строку

может пробелы нужно оставить?

Спустя 21 минута, 19 секунд (22.12.2011 - 22:07) Guest написал(а):
работает с массивами прекрасно и не сливается всё в порядке.

изначально я беру страницу и проделываю над ней следующее
$content = stristr($page_content, "<td width=\"17\">");
$k = strpos($content, "<a");
$content = substr($content, 0, $k);
$content = strip_tags($content);
$content = preg_replace('#[^/\n\d]#', '', $content);
$content = preg_replace('#\n{2,}#', ' ', $content);
$content = ltrim($content);
$arr = explode(' ', $content);
я в начале думал обойтись без регулярок но тут скорее с самого начала надо парсить одной регуляркой

Спустя 11 минут, 38 секунд (22.12.2011 - 22:18) killer8080 написал(а):
Цитата (Guest @ 22.12.2011 - 21:07)
тут скорее с самого начала надо парсить одной регуляркой

Именно smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.