Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Php, удалить строки содержащие спецсимволы
Форумы портала PHP.SU » » Вопросы новичков » Php, удалить строки содержащие спецсимволы

Страниц (1): [1]
 

1. seoshnik - 22 Февраля, 2015 - 14:27:58 - перейти к сообщению
Есть txt файлы разного объема.

Нужно удалить строки, содержащие значения ',%,$,@

В файле слова, каждое слово с новой строки

Необходимо именно удалить всю строку, если есть хоть одно значение
2. Ts.Saltan - 22 Февраля, 2015 - 16:28:02 - перейти к сообщению
1. открыть, прочитать файл // file_get_contents
2. содержимое разбить на массив строк //explode
3. пройтись по каждому элементу массива, условие не соблюдено - удаляем элемент //foreach, strpos, unset
4. объединяем элементы массива // implode
5. записываем данные обратно в файл //file_put_contents
3. seoshnik - 22 Февраля, 2015 - 17:40:28 - перейти к сообщению
Ts.Saltan пишет:
1. открыть, прочитать файл // file_get_contents
2. содержимое разбить на массив строк //explode
3. пройтись по каждому элементу массива, условие не соблюдено - удаляем элемент //foreach, strpos, unset
4. объединяем элементы массива // implode
5. записываем данные обратно в файл //file_put_contents

Можете на моем примере сделать? А то не особо силен в php
4. likvidator - 22 Февраля, 2015 - 20:17:17 - перейти к сообщению
5. skiphog - 22 Февраля, 2015 - 20:36:08 - перейти к сообщению
Как варинат
PHP:
скопировать код в буфер обмена
  1. $file = file('file.txt',FILE_IGNORE_NEW_LINES);
  2. $file = array_filter($file,function($value){
  3.   return !preg_match('/\'|%|\$|@/',$value);
  4. });
  5. file_put_contents('file.txt',implode("\n",$file));
6. seoshnik - 23 Февраля, 2015 - 09:34:33 - перейти к сообщению
skiphog пишет:
Сделал так
PHP:
скопировать код в буфер обмена
  1. return !preg_match('/\'|%|\$|\&|\-|20|@/',$value);

Но ни как не могу прикрутить, чтобы удаляло >,/
Example
    daily/changefreq>
    /url> sdfsdf


Ступил, вот ответ
PHP:
скопировать код в буфер обмена
  1.   return !preg_match('/\'|%|\$|\&|\-|20|\>|\/|@/',$value);
7. skiphog - 23 Февраля, 2015 - 10:39:35 - перейти к сообщению
Или так. Без разницы.
PHP:
скопировать код в буфер обмена
  1. return !preg_match('/[\'\$\/%@>&-]|20/',$value);

 

Powered by ExBB FM 1.0 RC1