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 » » Вопросы новичков » Как лучше всего сделать удаление нескольких ненужных символов из строки?

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

1. energ - 25 Апреля, 2012 - 14:11:13 - перейти к сообщению
Я обычно делаю через многослойный реплейс
но как видно это неудобно, некрасиво, да и наверно ресурсы лишние забирает как и время тратит

Посоветуйте более качественным способ удаления лишних символов
2. EuGen - 25 Апреля, 2012 - 14:13:10 - перейти к сообщению
energ
PHP:
скопировать код в буфер обмена
  1. $sData=str_replace(array(':', '(', ')', '/'), '', $sData);

?
3. snikers987 - 25 Апреля, 2012 - 14:13:47 - перейти к сообщению
4. energ - 25 Апреля, 2012 - 14:18:13 - перейти к сообщению
EuGen пишет:
$sData=str_replace(array(':', '(', ')', '/'), '', $sData);


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


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

Кстати еще вопрос встал как удалить при этой функции двойные кавычки из строки, ну впрочем ка ки одинарные
5. EuGen - 25 Апреля, 2012 - 14:20:02 - перейти к сообщению
energ
PHP:
скопировать код в буфер обмена
  1. $sData=str_replace(array(':', '(', ')', '/', '"', "'"), '', $sData);

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

?


Двойные в таком случае не удаляет
7. EuGen - 25 Апреля, 2012 - 14:23:25 - перейти к сообщению
energ
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', preg_split('/\s+/', $sData, $iMax, PREG_SPLIT_NO_EMPTY));

?
8. snikers987 - 25 Апреля, 2012 - 14:24:02 - перейти к сообщению
energ пишет:
Не буду создавать отдельную тему, еще есть вопрос, как последние слова из строки удалить, так чтобы осталось не больше 7 слов

9. energ - 25 Апреля, 2012 - 14:35:28 - перейти к сообщению
EuGen пишет:
energ
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', array_slice(preg_split('/\s+/', $sData, -1, PREG_SPLIT_NO_EMPTY), 0, $iMax));

?



Слова написанные через тире и через точку т.е. василий-пупки андрей.дмитреев тоже считаются как 2 отдельных слова
10. EuGen - 25 Апреля, 2012 - 14:37:27 - перейти к сообщению
energ
Тогда нужно перечислять такие символы. Например:
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', preg_split('/[\s\.\!\:\?]+/', $sData, $iMax, PREG_SPLIT_NO_EMPTY));
11. energ - 25 Апреля, 2012 - 14:41:29 - перейти к сообщению
EuGen пишет:
energ
Тогда нужно перечислять такие символы. Например:
PHP:
скопировать код в буфер обмена
  1. $iMax  = 7;
  2. $sData = join(' ', preg_split('/[\s\.\!\:\?]+/', $sData, $iMax, PREG_SPLIT_NO_EMPTY));


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

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

Сделал так все равно остаются строки по 8 слов, слова кстати некоторые в верхнем регстроре, некоторые в нижнем и некоторые комбинированные.
12. snikers987 - 25 Апреля, 2012 - 14:55:56 - перейти к сообщению
energ задайте $iMax = 6; ключи массива начинаются с нуля. 0-7 это восемь элементов.
13. energ - 25 Апреля, 2012 - 20:29:54 - перейти к сообщению
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.  

 

Powered by ExBB FM 1.0 RC1