За последние 24 часа нас посетили 72884 программиста и 10245 роботов. Сейчас ищут 2160 программистов ...

Почему в тайтле выводятся коды спецсимволов из базы вместо ковычек?

Тема в разделе "Сделайте за меня", создана пользователем гендаль серый, 21 дек 2023.

Метки:
  1. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    делаю таким образом - тайтл поста помещаю в название вкладки браузера
    PHP:
    1. <script type="text/javascript">
    2.     let title = document.title;
    3.     document.title = "<?php  echo htmlspecialchars(mb_strimwidth($text['title'], 0,60, '...'));?>";
    4. </script>
    посты выводятся нормально в теге pre, а здесь пробовал pre вставлял в код php, но выводит из базы коды ковычек вместо самих ковычек. как правильно сделать подскажите?
     
  2. Aleksandr.B

    Aleksandr.B Активный пользователь

    С нами с:
    2 фев 2023
    Сообщения:
    160
    Симпатии:
    43
    Адрес:
    Барнаул
    htmlspecialchars Преобразует специальные символы в HTML-сущности
     
  3. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    а кстати да..)
    но все равно так же выводится и тег pre выводится как текст...поменял. возможно тут с js как то надо по другому писать.
    PHP:
    1. "<?php  echo '<pre>' . mb_strimwidth($text['title'], 0,60, '...') . '</pre>'; ?>"
    --- Добавлено ---
    надо у спецов js спросить наверно
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    Попробуйте сделать так:
    PHP:
    1. <?
    2.     $text['title'] = 'A B C "привет из Münchenа" °&%$§ # abc 123 ';
    3.     $text['title'] .= 'quod ubi caesar resciit quorum per fines ierant his uti conquirerent';
    4.     $titleText = mb_substr(mb_convert_encoding($text['title'], 'utf-8'), 0, 60).'...';
    5. ?>
    6. <html>
    7. <head>
    8.   <title></title>
    9. </head>
    10. <script type="text/javascript">
    11. let title = document.querySelectorAll('title')[0];
    12. title.innerHTML = '<?=$titleText;?>';
    13. </script>
    14. </html>
    Удачи!
    Screenshot 2023-12-21 123430.jpg
     
    #4 Vladimir Kheifets, 21 дек 2023
    Последнее редактирование: 21 дек 2023
  5. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    не помогло, но спасибо.
    пробовал экранирование ковычек
    PHP:
    1. htmlspecialchars($title, ENT_QUOTES, 'UTF-8')
    тоже не помогает
     
  6. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Покажите, пожалуйста, что у Вас в $title
    Для этого создайте директорию debug и добавьте в PHP:
    PHP:
    1. //------------------------------------------------------------------------------
    2. function debug_save($str,$str2=null,$dir=null){
    3.         $datei = date("Ymd_His");
    4.         if($str2 != "") $datei .= "__";
    5.         $datei .= $str2;
    6.         if($dir == "")  $dir = "debug";
    7.         $file_name = $dir."/".$datei.".txt";
    8.         $str = $_SERVER['SCRIPT_FILENAME']."\r\n".$str;
    9.         $fp = fopen($file_name,'w');
    10.         flock($fp, 2);
    11.         fputs($fp, $str);
    12.         flock($fp, 3);
    13.         fclose($fp);
    14. }
    15. //------------------------------------------------------------------------------
    16. debug_save($title);
     
  7. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    код выдает ошибки, а в низу через echo на страницу нормально выводится название поста. почему то именно в заголовок вкладки не хочет
     

    Вложения:

    • Screenshot.png
      Screenshot.png
      Размер файла:
      25,6 КБ
      Просмотров:
      7
  8. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Ошибки из-за того, что Вы не создали директорию debug (там же где single.php)
    Покажите, пожалуйста, что у Вас в $title
    Это важно
     
  9. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    а блин, я в корне создавал папку...выдает в текстовом файле тоже с кодами
    'пример кода кнопки &amp;quot;Показать еще&amp;quot;, который использует PHP, PDO, AJAX и jQuery:'
     
    #9 гендаль серый, 25 дек 2023
    Последнее редактирование: 25 дек 2023
  10. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    Записал файл exampleTitle.txt
    Код (Text):
    1. пример кода кнопки &amp;quot;Показать еще&amp;quot;, который использует PHP, PDO, AJAX и jQuery
    См. html_entity_decode - Преобразует HTML-сущности в соответствующие им символы
    https://www.php.net/manual/en/function.html-entity-decode.php

    PHP:
    1. <?
    2. $text['title'] = file_get_contents("exampleTitle.txt");
    3. $titleText = mb_substr(html_entity_decode($text['title']), 0, 60).'...';
    4. ?>
    5. <html>
    6. <head>
    7.   <title></title>
    8. </head>
    9. <script type="text/javascript">
    10. let title = document.querySelectorAll('title')[0];
    11. title.innerHTML = '<?=$titleText;?>';
    12. </script>
    13. </html>
    Удачи!
     
  11. гендаль серый

    гендаль серый Новичок

    С нами с:
    20 янв 2023
    Сообщения:
    53
    Симпатии:
    0
    спасибо за помощь. я кстати пробовал эту функцию вроде...но попрбую еще раз
     
  12. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Screenshot 2023-12-27 053409.jpg