Как идентифицировать этот знак?

Тема в разделе "PHP", создана пользователем Solomon Kane, 12 май 2011.

Модераторы: latteo
  1. Solomon Kane

    Solomon Kane Постоялец

    Регистр.:
    26 авг 2009
    Сообщения:
    144
    Симпатии:
    9


    Уже все мозги сломал, так как стандартные средства его отлавливать не хотят, в то время как буржуи часто любят писать типа I’ve, we’re и так далее именно с этим знаком. На стандартный ' он совершенно не похож. Ни регулярки, ни стандартные функции поиска его не отлавливают. Может, кто сталкивался?
     
  2. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51
    PHP:
    $code ord("’");
    header('Content-Type: text/plain;charset=UTF-8');
    print 
    "&#$code;";
    нету под рукой сервера. пишу как думаю. отпишите результат.
     
    Solomon Kane нравится это.
  3. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    PHP:
    $txt 'I`ve';
    if (
    strpos($txt'`')) echo 'found';
    дал found, т.е. нормально нашел
     
    Solomon Kane нравится это.
  4. bork75

    bork75 The Team

    Регистр.:
    21 июн 2008
    Сообщения:
    1.451
    Симпатии:
    677
    Проверил стандартные функции поиска, нормально отлавливается

    [​IMG]
     
    Solomon Kane нравится это.
  5. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    короче знак как знак, ничего особенного, даже в аски таблице находится, т.е. с юникодом и т.п. не нужно игратся, будет во всех кодировках.
     
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    может там html код этой кавычки

    PHP:
    $text '& #146; или  ’';
    echo 
    $text;
    echo 
    strpos($text'’') ? 'да' 'нет';
    echo 
    strpos($text'& #146;') ? 'да' 'нет';
    убрать пробел между & # проблем парсинга тут

    firefox сразу конвертирует коды в символы и в html исходнике показывает уже сами символы
     
    Solomon Kane нравится это.
  7. Solomon Kane

    Solomon Kane Постоялец

    Регистр.:
    26 авг 2009
    Сообщения:
    144
    Симпатии:
    9
    Дык в том-то и дело я пробовал всё вышеописанное, не находит. Может, с Денвером что-то не так?

    Знак дан как есть, в спецсимвол не переведен.
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Откуда ты берёшь этот символ? Надо из перво источника- если скопируешь в редактор для тестов- может получимтся не то. Ещё- смотри исходный код (иногда там написано то, что нужно).

    попробуй ещё
    PHP:
    ’
    Если уж и это не поможет- пытайся сконвертить буквы строки в html коды- что-то вроде
    PHP:
    function utf8tohtml($utf8$encodeTags) {
        
    $result '';
        for (
    $i 0$i strlen($utf8); $i++) {
            
    $char $utf8[$i];
            
    $ascii ord($char);
            if (
    $ascii 128) {
                
    // one-byte character
                
    $result .= ($encodeTags) ? htmlentities($char) : $char;
            } else if (
    $ascii 192) {
                
    // non-utf8 character or not a start byte
            
    } else if ($ascii 224) {
                
    // two-byte character
                
    $result .= htmlentities(substr($utf8$i2), ENT_QUOTES'UTF-8');
                
    $i++;
            } else if (
    $ascii 240) {
                
    // three-byte character
                
    $ascii1 ord($utf8[$i+1]);
                
    $ascii2 ord($utf8[$i+2]);
                
    $unicode = (15 $ascii) * 4096 +
                           (
    63 $ascii1) * 64 +
                           (
    63 $ascii2);
                
    $result .= "&#$unicode;";
                
    $i += 2;
            } else if (
    $ascii 248) {
                
    // four-byte character
                
    $ascii1 ord($utf8[$i+1]);
                
    $ascii2 ord($utf8[$i+2]);
                
    $ascii3 ord($utf8[$i+3]);
                
    $unicode = (15 $ascii) * 262144 +
                           (
    63 $ascii1) * 4096 +
                           (
    63 $ascii2) * 64 +
                           (
    63 $ascii3);
                
    $result .= "&#$unicode;";
                
    $i += 3;
            }
        }
        return 
    $result;
    }
    function 
    ascii2entities($string){
        for(
    $i=128;$i<=255;$i++){
            
    $entity htmlentities(chr($i), ENT_QUOTES'cp1252');
            
    $temp substr($entity01);
            
    $temp .= substr($entity, -11);
            if (
    $temp != '&;'){
                
    $string str_replace(chr($i), ''$string);
            }
            else{
                
    $string str_replace(chr($i), $entity$string);
            }
        }
        return 
    $string;
    }
    В зависимости от кодировки. Они выдадут код типа
    среди них ищешь код символа. Мож он ненормальный))Если и это не поможет- глянь комменты, там ещё несколько реализаций
    http://www.php.net/manual/en/function.htmlentities.php