Как добавить дополнительную ссылку для отображения ее содержимого в модальном поле [дубликат]

Консенсус заключается в использовании словаря для этого - см. другие ответы. Это хорошая идея для большинства случаев, однако есть много аспектов, связанных с этим: вы сами будете нести ответственность за этот словарь, включая сбор мусора (из переменных в-dict) и т. Д. Есть либо нет локальности или глобальности для переменных переменных, это зависит от глобальности словаря, если вы хотите переименовать имя переменной, вам придется делать это вручную, однако вы гораздо более гибкие, например вы можете решить перезаписать существующие переменные или ... ... выбрать для реализации константных переменных для создания исключения при перезаписи для разных типов и т. д.

Тем не менее, я применил переменный переменный менеджер-класс который обеспечивает некоторые из вышеуказанных идей. Он работает для python 2 и 3.

Вы использовали бы variable variables manager следующим образом:

from variableVariablesManager import VariableVariablesManager myVars = VariableVariablesManager() myVars['test'] = 25 print(myVars['test']) # define a const variable myVars.defineConstVariable('myconst', 13) try: myVars['myconst'] = 14 # <- this raises an error, since 'myconst' must not be changed print("not allowed") except AttributeError as e: pass # rename a variable myVars.renameVariable('myconst', 'myconstOther') # preserve locality def testLocalVar(): myVars = VariableVariablesManager() myVars['test'] = 13 print("inside function myVars['test']:", myVars['test']) testLocalVar() print("outside function myVars['test']:", myVars['test']) # define a global variable myVars.defineGlobalVariable('globalVar', 12) def testGlobalVar(): myVars = VariableVariablesManager() print("inside function myVars['globalVar']:", myVars['globalVar']) myVars['globalVar'] = 13 print("inside function myVars['globalVar'] (having been changed):", myVars['globalVar']) testGlobalVar() print("outside function myVars['globalVar']:", myVars['globalVar'])

Если вы хотите разрешить переписывание переменных с одним и тем же типом:

myVars = VariableVariablesManager(enforceSameTypeOnOverride = True) myVars['test'] = 25 myVars['test'] = "Cat" # <- raises Exception (different type on overwriting)

36
задан josliber 5 June 2015 в 15:47
поделиться

11 ответов

Это то, что я использую:

// strip tags to avoid breaking any html
$string = strip_tags($string);
if (strlen($string) > 500) {

    // truncate string
    $stringCut = substr($string, 0, 500);
    $endPoint = strrpos($stringCut, ' ');

    //if the string doesn't contain any space then it will cut without word basis.
    $string = $endPoint? substr($stringCut, 0, $endPoint):substr($stringCut, 0);
    $string .= '... <a href="/this/story">Read More</a>';
}
echo $string;

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

120
ответ дан AHJeebon 21 August 2018 в 16:12
поделиться
  • 1
    Спасибо за ответ, но после использования strip_tags ($ stringings) html потерян, как я могу после сокращения длины строки сохранить обратно html-back, который был ранее представлен – harshal 11 September 2015 в 11:54
  • 2
    @harshal strip_tags находится там, потому что большинство сайтов, на которых я работал, просто хотят использовать текстовые сообщения (которые затем ссылаются на страницу с полностью форматированной статьей). Если вы хотите сохранить HTML, вы можете использовать синтаксический анализатор XML, чтобы захватить текстовые значения каждого подэлемента, скопировав количество символов, а также проверив возможное поломку тега. Это гораздо более сложная проблема и далеко выходит за рамки этого вопроса. – webbiedave 1 October 2015 в 02:29
  • 3
    @Webbiedave, что здесь href? извините, я не понял, вот почему я спросил ??? следует ли указывать на собственную страницу или что-то еще? – Mike Ross 8 October 2015 в 00:21
  • 4
    «убедитесь, что он заканчивается словом, так что убийство не становится задницей ...». ROFL – DeeJay 8 May 2017 в 17:29
  • 5
    Три точки не будут добавлены к результату, если первый оператор в тройной проверке верен. Итак, скобки должны быть добавлены вокруг тройной проверки $teaser = ($endPoint ? substr($stringCut, 0, $endPoint) : substr($stringCut, 0)) . ' ...';. Кроме того, это приятное решение. – azurecorn 6 July 2018 в 13:45
<?php $string = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.";
if (strlen($string) > 25) {
$trimstring = substr($string, 0, 25). ' <a href="#">readmore...</a>';
} else {
$trimstring = $string;
}
echo $trimstring;
//Output : Lorem Ipsum is simply dum [readmore...][1]
?>
1
ответ дан Abdul Baquee 21 August 2018 в 16:12
поделиться

Предельные слова в тексте:

function limitTextWords($content = false, $limit = false, $stripTags = false, $ellipsis = false) 
{
    if ($content && $limit) {
        $content = ($stripTags ? strip_tags($content) : $content);
        $content = explode(' ', $content, $limit+1);
        array_pop($content);
        if ($ellipsis) {
            array_push($content, '...');
        }
        $content = implode(' ', $content);
    }
    return $content;
}

Предельные символы в тексте:

function limitTextChars($content = false, $limit = false, $stripTags = false, $ellipsis = false) 
{
    if ($content && $limit) {
        $content  = ($stripTags ? strip_tags($content) : $content);
        $ellipsis = ($ellipsis ? "..." : $ellipsis);
        $content  = mb_strimwidth($content, 0, $limit, $ellipsis);
    }
    return $content;
}

Использование:

$text = "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.";
echo limitTextWords($text, 5, true, true);
echo limitTextChars($text, 5, true, true);
0
ответ дан Alexandru Sirbu 21 August 2018 в 16:12
поделиться

Просто используйте это, чтобы удалить текст:

echo strlen($string) >= 500 ? 
substr($string, 0, 490) . ' <a href="link/to/the/entire/text.htm">[Read more]</a>' : 
$string;

Изменить и, наконец:

function split_words($string, $nb_caracs, $separator){
    $string = strip_tags(html_entity_decode($string));
    if( strlen($string) <= $nb_caracs ){
        $final_string = $string;
    } else {
        $final_string = "";
        $words = explode(" ", $string);
        foreach( $words as $value ){
            if( strlen($final_string . " " . $value) < $nb_caracs ){
                if( !empty($final_string) ) $final_string .= " ";
                $final_string .= $value;
            } else {
                break;
            }
        }
        $final_string .= $separator;
    }
    return $final_string;
}

Здесь разделитель является ссылкой href для чтения больше;)

2
ответ дан CrazyMax 21 August 2018 в 16:12
поделиться
  • 1
    Вы понимаете, что это 500 ПИСЬМА, а не слова, обряд? : D Кроме того, это может полностью нарушить код стороны, если есть какой-либо HTML-код (может быть получен как & lt; im вместо & lt; img & gt; ...) – Aurel Bílý 23 November 2010 в 17:57
  • 2
    Итак, используйте strip_tags () внутри;) – CrazyMax 23 November 2010 в 17:59
  • 3
    Это может сломать слово. – Aif 23 November 2010 в 18:32
  • 4
    @ Если я отредактирую свою функцию с помощью функции split words. Надеюсь эта помощь :) – CrazyMax 27 December 2010 в 18:39

Другой способ: вставьте следующий файл в файл function.php вашей темы.

remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'custom_trim_excerpt');

function custom_trim_excerpt($text) { // Fakes an excerpt if needed
global $post;
if ( '' == $text ) {
$text = get_the_content('');
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = x;
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '...');
$text = implode(' ', $words);
}
}
return $text;
}

Вы можете использовать это.

0
ответ дан csehasib 21 August 2018 в 16:12
поделиться

Я собрал два разных ответа:

  1. Ограничить символы
  2. Полный HTML теги, отсутствующие
    $string = strip_tags($strHTML);
    $yourText = $strHTML;
    if (strlen($string) > 350) {
        $stringCut = substr($post->body, 0, 350);
        $doc = new DOMDocument();
        $doc->loadHTML($stringCut);
        $yourText = $doc->saveHTML();
    }
    $yourText."...<a href=''>View More</a>"
    
3
ответ дан JonasCz 21 August 2018 в 16:12
поделиться
<?php
     $images_path = 'uploads/adsimages/';
             $ads = mysql_query("select * from tbl_postads ORDER BY ads_id DESC limit 0,5 ");
                    if(mysql_num_rows($ads)>0)
                    {
                        while($ad = mysql_fetch_array($ads))

                        {?>


     <div style="float:left; width:100%; height:100px;">
    <div style="float:left; width:40%; height:100px;">
      <li><img src="<?php echo $images_path.$ad['ads_image']; ?>" width="100px" height="50px" alt="" /></li>
      </div>

       <div style="float:left; width:60%; height:100px;">
      <li style="margin-bottom:4%;"><?php echo substr($ad['ads_msg'],0,50);?><br/> <a href="index.php?page=listing&ads_id=<?php echo $_GET['ads_id'];?>">read more..</a></li>
      </div>

     </div> 

    <?php }}?>
0
ответ дан josliber 21 August 2018 в 16:12
поделиться

В принципе, вам нужно интегрировать ограничитель слов (например, что-то вроде этого ) и использовать что-то вроде shadowbox . Ваша ссылка на ссылку будет ссылаться на скрипт PHP, который отображает всю статью. Просто установите Shadowbox на эти ссылки, и вы настроены. (См. Инструкции на своем сайте. Его легко.)

0
ответ дан simshaun 21 August 2018 в 16:12
поделиться

Этот метод не будет усекать слово посередине.

list($output)=explode("\n",wordwrap(strip_tags($str),500),1);
echo $output. ' ... <a href="#">Read more</a>';
8
ответ дан stillstanding 21 August 2018 в 16:12
поделиться
  • 1
    вы можете изменить параметр & quot; & quot; на ссылку на дополнительную информацию или сделать его открытым div со всем блоком текста на той же странице. Множество вариантов .. – Brian H 23 November 2010 в 18:03
  • 2
    пожалуйста, отформатируйте свой ответ в следующий раз. есть соответствующие кнопки в верхней части текстового поля – stillstanding 23 November 2010 в 18:05
  • 3
    Поскольку это проблема форматирования, предпочтительнее ограничивать число символов, а не количество слов, поскольку слова будут иметь разную длину. – webbiedave 23 November 2010 в 18:38
  • 4
    @stillstanding: Спасибо, я не понимал, что он удалил доход до тех пор, пока я не опубликовал. Я предположил, что это будет показано как напечатанное. – Brian H 23 November 2010 в 19:06
0
ответ дан Er Parwinder Hirkewal 1 November 2018 в 09:28
поделиться
8
ответ дан stillstanding 1 November 2018 в 09:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: