Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обрезать ненужные символы
 
 автор: TetRiska   (30.03.2011 в 16:49)   письмо автору
 
 

Всем привет, как можно обрезать символы такие как:
1 - длинное тире, думаю тут все понятно
2 - символ >>, он же,
»
, но который при просмотре хтмл кода не дает свой код

делаю для авто перевода урла с кириллицы на латиницу, поэтому хочу учесть все возможные ненужные символы

  Ответить  
 
 автор: cheops   (30.03.2011 в 17:11)   письмо автору
 
   для: TetRiska   (30.03.2011 в 16:49)
 

Хм... можно поступить следующим образом
<?php
  $text 
str_replace("—"""$text);
  
$text str_replace("»"""$text);
?>

  Ответить  
 
 автор: TetRiska   (30.03.2011 в 18:10)   письмо автору
 
   для: cheops   (30.03.2011 в 17:11)
 

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

$symbol = array(
            "~"=>"","`"=>"","!"=>"","@"=>"",'"'=>"","#"=>"","№"=>"",
            "$"=>"",";"=>"","%"=>"","^"=>"",":"=>"","&"=>"","?"=>"",
            "*"=>"","("=>"",")"=>"","-"=>"","_"=>"","+"=>"","="=>"",
            "|"=>"","["=>"","]"=>"","{"=>"","}"=>"","'"=>"",","=>"",
            "."=>"","<"=>"",">"=>"","/"=>""
        );

  Ответить  
 
 автор: z668   (30.03.2011 в 18:14)   письмо автору
 
   для: TetRiska   (30.03.2011 в 18:10)
 

"\\"=>""

  Ответить  
 
 автор: TetRiska   (30.03.2011 в 18:18)   письмо автору
 
   для: z668   (30.03.2011 в 18:14)
 

вот писал ф-цию по переводу кириллицы в латиницу...можно ли ее улучшить + к этому же обрезать то, что я не смог:

function format_url($str){
    if($str != ''){
        $fixtext    = '';
        $nbsp = array(
            "~"=>" ","`"=>" ","!"=>" ","@"=>" ",'"'=>" ","#"=>" ","№"=>" ",
            "$"=>" ",";"=>" ","%"=>" ","^"=>" ",":"=>" ","&"=>" ","?"=>" ",
            "*"=>" ","("=>" ",")"=>" ","-"=>" ","_"=>" ","+"=>" ","="=>" ",
            "|"=>" ","["=>" ","]"=>" ","{"=>" ","}"=>" ","'"=>" ",","=>" ",
            "."=>" ","<"=>" ",">"=>" ","/"=>" "
        );
        
        $str = strtr($str,$nbsp);
        
        $trans_arr = explode(" ", stripslashes(trim(strip_tags($str))));
        
        $symbol = array(
            "~"=>"","`"=>"","!"=>"","@"=>"",'"'=>"","#"=>"","№"=>"",
            "$"=>"",";"=>"","%"=>"","^"=>"",":"=>"","&"=>"","?"=>"",
            "*"=>"","("=>"",")"=>"","-"=>"","_"=>"","+"=>"","="=>"",
            "|"=>"","["=>"","]"=>"","{"=>"","}"=>"","'"=>"",","=>"",
            "."=>"","<"=>"",">"=>"","/"=>""
        );
        
        for($i=0;$i<count($trans_arr);$i++){
            if(strtr($trans_arr[$i],$symbol) != ''){
                $clear[] = strtr($trans_arr[$i],$symbol);
            }
        }
        
        $p = 0;
        for($j=0;$j<count($clear);$j++){
            $p++;
            $add = ($p !=  count($clear))?"-":"";
            if($clear[$j] != ""){
                $fixtext .= $clear[$j].$add;
            }
        }
        
        $translit = array(
            "а"=>"a","б"=>"b","в"=>"v","г"=>"g","ґ"=>"g","д"=>"d",
            "е"=>"e","є"=>"e","ё"=>"e","ж"=>"zh","з"=>"z","и"=>"i",
            "і"=>"i","ї"=>"i","й"=>"i","к"=>"k","л"=>"l","м"=>"m","н"=>"n",
            "о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u",
            "ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch",
            "ъ"=>"","ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", "ей"=>"yei"
        );
        
        return strtr(mb_strtolower($fixtext,"UTF-8"),$translit);
    }
}

если есть желание помочь довести до ума ф-цию, буду очень благодарен

  Ответить  
 
 автор: z668   (30.03.2011 в 18:20)   письмо автору
 
   для: TetRiska   (30.03.2011 в 18:18)
 

К сожалению сейчас времени нет, как будет постараюсь помочь.

  Ответить  
 
 автор: TetRiska   (30.03.2011 в 18:22)   письмо автору
 
   для: z668   (30.03.2011 в 18:20)
 

спасибо, а пока сам постараюсь придумать более универсальный вариант

  Ответить  
 
 автор: z668   (30.03.2011 в 19:26)   письмо автору
 
   для: TetRiska   (30.03.2011 в 18:22)
 

Только что нашел на в справочнике, возможно поможет
<?php
// $document на выходе должен содержать HTML-документ.
// Необходимо удалить все HTML-теги, секции javascript,
// пробельные символы. Также необходимо заменить некоторые
// HTML-сущности на их эквивалент.

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javaScript
                 
"'<[\/\!]*?[^<>]*?>'si",           // Вырезает HTML-теги
                 
"'([\r\n])[\s]+'",                 // Вырезает пробельные символы
                 
"'&(quot|#34);'i",                 // Заменяет HTML-сущности
                 
"'&(amp|#38);'i",
                 
"'&(lt|#60);'i",
                 
"'&(gt|#62);'i",
                 
"'&(nbsp|#160);'i",
                 
"'&(iexcl|#161);'i",
                 
"'&(cent|#162);'i",
                 
"'&(pound|#163);'i",
                 
"'&(copy|#169);'i",
                 
"'&#(\d+);'e");                    // интерпретировать как php-код

$replace = array ("",
                  
"",
                  
"\\1",
                  
"\"",
                  
"&",
                  
"<",
                  
">",
                  
" ",
                  
chr(161),
                  
chr(162),
                  
chr(163),
                  
chr(169),
                  
"chr(\\1)");

$text preg_replace($search$replace$document);
?> 

  Ответить  
 
 автор: TetRiska   (31.03.2011 в 11:27)   письмо автору
 
   для: z668   (30.03.2011 в 19:26)
 

не совсем то...мне нужно обрезать все символы а оставить чистый текст..пробовал так:
print preg_replace("|[^а-яА-Я1-9 ]|i", NULL, "fff/\&nbsp;ааа68= яяявс12hello+_-)(*&^%$#@!~`«»—");
хорошо, но обрезает инглишь буквы и не обрезает длинное тире и стрелочки...тогда сделал так:
print preg_replace("|[^а-яА-Я1-9a-zA-Z ]|i", NULL, "fff/\&nbsp;ааа68= яяявс12hello+_-)(*&^%$#@!~`«»—");
инглишь буквы оставляет, но мне остаток от nbsp ненужен в строке + по прежнему длинное тире и стрелочки есть....как бы такие символы удалять не прописывая огромный массив таких символов для уничтожения?

  Ответить  
 
 автор: TetRiska   (31.03.2011 в 13:07)   письмо автору
 
   для: z668   (30.03.2011 в 19:26)
 

возникла идейка, а может мне написать массив из 3-х алфавитов (укр, ру и енг), после чего сверятся посимвольно? если не совпадает, то отбрасывать....предварительно нужно очистить от хтмл и применить ф-цию htmlspecialchars_decode которая переведет HTML-сущности в символы которые просто потом будут проигнорированные

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования