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.SU » PHP » Программирование на PHP » Удаление похожих символов

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

1. Acuna - 17 Декабря, 2009 - 14:31:53 - перейти к сообщению
Здравствуйте!

У меня есть такой код:

Цитата:
'1', 1, 'Acuna', Acuna, 'thrtymyeu', thrtymyeu, 'acuna@fromru.com', acuna@fromru.com, '0000-00-00', 0000-00-00, '0', 0, '1260473831', 1260473831, '', , '95.28.118.67', 95.28.118.67, '1', 1, '222', 222

Можно-ли в нем как-то удалить символы без кавычек, но оставить те, которые в кавычках?

Спасибо!
2. Carzil - 17 Декабря, 2009 - 15:32:02 - перейти к сообщению
3. Hunter - 17 Декабря, 2009 - 15:44:08 - перейти к сообщению
Acuna
символы или строки?
если не разберешься с регулярными выражениями, то всегда можно написать свою функцию, это не сложно. см. работу со строками.

Carzilздарова))
4. Acuna - 17 Декабря, 2009 - 18:54:31 - перейти к сообщению
Да, я нутром чувствую, что нужны регулярки, но никак не могу придумать функцию, которая означает "все, что без кавычек". Вот и подумал, может, кто знает Подмигивание
5. JustUserR - 17 Декабря, 2009 - 19:44:48 - перейти к сообщению
Acuna [^\"]
6. Acuna - 17 Декабря, 2009 - 19:51:02 - перейти к сообщению
JustUserR, спасибо! А ты не мог-бы всю функцию написать, а-то я так попробывал, но не работает:

PHP:
скопировать код в буфер обмена
  1. $string = "'1', 1, 'Acuna', Acuna, 'thrtymyeu', thrtymyeu, 'acuna@fromru.com', acuna@fromru.com, '0000-00-00', 0000-00-00, '0', 0, '1260473831', 1260473831, '', , '95.28.118.67', 95.28.118.67, '1', 1, '222', 222";
  2.  
  3. $replace = preg_replace ("/, [^\']/i", "", $string);
7. Carzil - 17 Декабря, 2009 - 20:49:55 - перейти к сообщению
Hunter пишет:
Carzilздарова))

?????
На форуме есть специальный раздел: "Регулярные выражения", я и подумал что Acuna не знает что такое регулярные выражения, и дал ему ссылку, чтобы он про них прочитал!
8. chaynyk - 17 Декабря, 2009 - 22:46:38 - перейти к сообщению
Acuna вот тебе готовое решение:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ishodnik="'1', 1, 'Acuna', Acuna, 'thrtymyeu', thrtymyeu, 'acuna@fromru.com', acuna@fromru.com, '0000-00-00', 0000-00-00, '0', 0, '1260473831', 1260473831, '', , '95.28.118.67', 95.28.118.67, '1', 1, '222', 222";
  3. $arr_dan = explode(",", $ishodnik);
  4. foreach($arr_dan as $t) {
  5. if( preg_match ("#\'.*?\'#i", $t, $ts)){$delbezkov=$delbezkov.$t.",";} else { $delbezkov=$delbezkov.",";}
  6. }
  7. echo $ishodnik."<br>";
  8. echo $delbezkov;
  9.  

Не забудь Спасибо сказать Улыбка
9. Acuna - 17 Декабря, 2009 - 22:54:46 - перейти к сообщению
После нескольких вычислений и прослушивания тяжелой музыки было придумано это:

PHP:
скопировать код в буфер обмена
  1. $replace = preg_replace ("/, (\w+)/i", "", $string);
  2. $replace2 = preg_replace ("/'(@|-|\.)(.*?), /i", "', ", $replace);
  3. $replace3 = str_replace (", ,", ",", $replace2);
  4.  
  5. echo $replace3;


Даже не вериться, что сам это придумал Ха-ха Уффф.... А можно их как-то объеденить в одну?
chaynyk, изивини, но твой код не работает... (Ничего не меняет). Да и цикл не надо использовать...
10. Champion - 18 Декабря, 2009 - 08:44:37 - перейти к сообщению
Я бы сделал explode по ', ' и потом удалил бы из массива то, что начинается на апостроф.
Ну или таким шаблоном
"/(, )?('.+?')(, )?/".
11. JustUserR - 18 Декабря, 2009 - 10:51:32 - перейти к сообщению
Champion пишет:
Я бы сделал explode по ', '
Кстати я бы так тоже сделал - функция split на Perlе одна из самых подручных Улыбка
Кстати когда данные разделяются по какомуто символу то надо не забывать шифровать этот символ внутри данных

 

Powered by ExBB FM 1.0 RC1