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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как лучше всего сделать удаление нескольких ненужных символов из строки?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
energ
Отправлено: 25 Апреля, 2012 - 14:11:13
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Я обычно делаю через многослойный реплейс
но как видно это неудобно, некрасиво, да и наверно ресурсы лишние забирает как и время тратит

Посоветуйте более качественным способ удаления лишних символов
 
 Top
EuGen Администратор
Отправлено: 25 Апреля, 2012 - 14:13:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




energ
PHP:
скопировать код в буфер обмена
  1. $sData=str_replace(array(':', '(', ')', '/'), '', $sData);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 25 Апреля, 2012 - 14:13:47
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)






-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
energ
Отправлено: 25 Апреля, 2012 - 14:18:13
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




EuGen пишет:
$sData=str_replace(array(':', '(', ')', '/'), '', $sData);


snikers987 пишет:
cho str_replace(array(':', ';', '&'), array(''), $sString);


О, отлично придумали ))

Кстати еще вопрос встал как удалить при этой функции двойные кавычки из строки, ну впрочем ка ки одинарные
 
 Top
EuGen Администратор
Отправлено: 25 Апреля, 2012 - 14:20:02
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




energ
PHP:
скопировать код в буфер обмена
  1. $sData=str_replace(array(':', '(', ')', '/', '"', "'"), '', $sData);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
energ
Отправлено: 25 Апреля, 2012 - 14:21:05
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Не буду создавать отдельную тему, еще есть вопрос, как последние слова из строки удалить, так чтобы осталось не больше 7 слов
(Добавление)
EuGen пишет:
energ
PHP:
скопировать код в буфер обмена
  1. $sData=str_replace(array(':', '(', ')', '/', '"', "'"), '', $sData);

?


Двойные в таком случае не удаляет
 
 Top
EuGen Администратор
Отправлено: 25 Апреля, 2012 - 14:23:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




energ
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', preg_split('/\s+/', $sData, $iMax, PREG_SPLIT_NO_EMPTY));

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 25 Апреля, 2012 - 14:24:02
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




energ пишет:
Не буду создавать отдельную тему, еще есть вопрос, как последние слова из строки удалить, так чтобы осталось не больше 7 слов



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
energ
Отправлено: 25 Апреля, 2012 - 14:35:28
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




EuGen пишет:
energ
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', array_slice(preg_split('/\s+/', $sData, -1, PREG_SPLIT_NO_EMPTY), 0, $iMax));

?



Слова написанные через тире и через точку т.е. василий-пупки андрей.дмитреев тоже считаются как 2 отдельных слова
 
 Top
EuGen Администратор
Отправлено: 25 Апреля, 2012 - 14:37:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




energ
Тогда нужно перечислять такие символы. Например:
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', preg_split('/[\s\.\!\:\?]+/', $sData, $iMax, PREG_SPLIT_NO_EMPTY));


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
energ
Отправлено: 25 Апреля, 2012 - 14:41:29
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




EuGen пишет:
energ
Тогда нужно перечислять такие символы. Например:
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', preg_split('/[\s\.\!\:\?]+/', $sData, $iMax, PREG_SPLIT_NO_EMPTY));


Остается 8 слов в некоторых строках, общий вид: слово слово слово.слово слово-слово слово слово

Не пойму где в функции надо вписывать эти символы?
(Добавление)
Хотя понял если еще одним реплейсом заменить точки и тире пробелами то может получиться, но это изменит общий вид.

Сделал так все равно остаются строки по 8 слов, слова кстати некоторые в верхнем регстроре, некоторые в нижнем и некоторые комбинированные.
 
 Top
snikers987
Отправлено: 25 Апреля, 2012 - 14:55:56
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




energ задайте $iMax = 6; ключи массива начинаются с нуля. 0-7 это восемь элементов.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
energ
Отправлено: 25 Апреля, 2012 - 20:29:54
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




snikers987 пишет:
energ задайте $iMax = 6; ключи массива начинаются с нуля. 0-7 это восемь элементов.


Вообще я как посмотрел вроде лишние слова вообще не удаляются, как было больше 7 так и осталось, скину весь код целиком может вы разберетесь в этом

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?
  4. function funct($string){
  5. $sData= file_get_contents($string);
  6.  
  7. preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', $sData, $rgMatches);
  8.  
  9. unset ($rgMatches[1][0]);
  10.  
  11. echo count($rgMatches[1]).'<br>';
  12.  
  13. foreach ($rgMatches[1]  as $key => $value) {
  14. echo "<b>".str_de_simvol ($value)."</b><br>";
  15. }
  16.  
  17. }
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. function str_de_simvol ($string){
  26.  
  27. $string= str_replace(array('<','[CDATA[',']]>','+',':', '(', ')', '/', '"', "'"), '', $string);
  28.  
  29. $string= str_replace(array('-','.'), ' ', $string);
  30.  
  31. $iMax  = 5;
  32.  
  33. return $sData = join(' ', preg_split('/[\s\.\!\:\?]+/', $string, $iMax, PREG_SPLIT_NO_EMPTY));
  34.  
  35.  
  36. }
  37.  
  38. ?>
  39.  
  40.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB