2013-12-17 1 views
18

Я хочу случайный текст от Lorem Ipsum, поэтому я могу использовать его при создании веб-страниц. Я не могу найти какие-либо функции PHP, которые это делают, и мне интересно, есть ли общедоступные библиотеки или API на сайтах, которые могут быть использованы для получения случайного текста?Как получить случайный текст из lorem Ipsum в PHP?

+2

Попробуйте это http://blog.ergatides.com/2011/08/16/simple-php-one-liner-to-generate-random-lorem-ipsum-lipsum-text/ –

+2

или вы можете прочитать три ответы, которые только что скопировали и вставляли это. –

+3

http://loripsum.net действительно имеет намного более чистый API, который не требует синтаксического анализа XML и позволяет лучше параметризировать для заполнения веб-страниц. –

ответ

51

$content = file_get_contents('http://loripsum.net/api');

Docs в правом нижнем углу this page:

Просто сделать G ET запрос на loripsum.net/api, чтобы получить какой-то заполнитель текст. Вы можете добавить дополнительные параметры, чтобы указать вывод, который вы собираетесь , чтобы получить. Скажем, вам нужно 10 коротких абзацев с заголовками, используйте http://loripsum.net/api/10/short/headers. Все возможные параметры:

  • (целое число) - количество абзацев для генерации.
  • короткие, средние, длинные, очень длинные - средняя длина абзаца.
  • decorate - добавить жирный, курсив и выделенный текст.
  • link - Добавить ссылки.
  • ul - Добавить неупорядоченные списки.
  • ol - Добавить пронумерованные списки.
  • dl - Добавить список описаний.
  • bq - Добавить блок-схемы.
  • code - Добавить образцы кода.
  • заголовки - Добавить заголовки.
  • allcaps - используйте ВСЕ КАПСЫ.
  • прут - Пруден версия.
  • plaintext - Возвращает обычный текст, без HTML.
+0

Я никогда не использовал 'file_get_contents()' раньше, [docs] (http://www.php.net/file_get_contents) говорит, что он принимает аргументы имени файла, я удивлен, что он работает с URL-адресом. – Celeritas

+0

@Celeritas: Файл также может быть удаленным файлом :) –

+0

Прокрутите страницу вниз до тех пор, пока не найдете «URL-адрес, который можно использовать в качестве имени файла с этой функцией, если обертки fopen были включены. См. Fopen() для получения дополнительной информации подробности о том, как указать имя файла. См. Поддерживаемые протоколы и обертки для ссылок на информацию о том, какие способности могут иметь различные обертки, заметки об их использовании и информация о любых предопределенных переменных, которые они могут предоставить ». - работает с PHP 4.2 или около того. –

4
$lipsum = simplexml_load_file('http://www.lipsum.com/feed/xml?amount=1&what=paras&start=0')->lipsum; 

ИЛИ вы можете сделать функцию:

function random_lipsum($amount = 1, $what = 'paras', $start = 0) { 
    return simplexml_load_file("http://www.lipsum.com/feed/xml?amount=$amount&what=$what&start=$start")->lipsum; 
} 

Source

+0

Почему все урезали? –

+0

Скорее всего, я скорректировал это. –

0

http://www.lipsum.com/

для использования PHP:

$lipsum = simplexml_load_file('http://www.lipsum.com/feed/xml?amount=1&what=paras&start=0')->lipsum; 

или в функции:

function random_lipsum($amount = 1, $what = 'paras', $start = 0) { 
return simplexml_load_file("http://www.lipsum.com/feed/xml?amount=$amount&what=$what&start=$start")->lipsum; 
} 
0

вы должны использовать это класс, вы должны включить его в свой проекта с этой командой echo Lorem::create($lang = Lorem::LANG_FA , $count = 5 , $type = Lorem::TYPE_PARAGRAPH , $end = '...'); затем вот класс

class Lorem { 
const TYPE_WORD = 1; 
const TYPE_CHAR = 2; 
const TYPE_PARAGRAPH = 3; 
const LANG_EN = 'en'; 
static private $en = 'Lorem ipsum '; 
static function create($lang = self::LANG_FA, $count = 10, $type = self::TYPE_WORD, $end = '...') { 
    $out = ''; 
    if ($lang == self::LANG_FA) 
     $lorem = self::$fa; 
    else 
     $lorem = self::$en; 

    switch ($type) { 
     case self::TYPE_WORD : 
     $words = explode(' ', $lorem); 
     $i = 0; 
     foreach ($words as $word) { 
      if ($i == $count) 
       break; 
      $out .= ' ' . $word; 
      $i++; 
     } 
     break; 
     case self::TYPE_CHAR : 
     for ($i = 0; $i <= $count; $i++) { 
      $out .= $lorem[$i]; 
     } 
     break; 
     case self::TYPE_PARAGRAPH: 
     for ($i = 0; $i < $count; $i++) { 
      $out .= '<p>' . $lorem . '</p>'; 
     } 
     break; 
    } 
    return $out . $end; 
} 

}

9

Я действительно не хочу, чтобы сделать вызов API, чтобы получить некоторый произвольный текст, так что я написал это сам:

<?php 
abstract class Lorem { 
    public static function ipsum($nparagraphs) { 
     $paragraphs = []; 
     for($p=0; $p<$nparagraphs; ++$p) { 
      $nsentences = random_int(3,8); 
      $sentences = []; 
      for($s=0; $s<$nsentences; ++$s) { 
       $frags = []; 
       $commaChance = .33; 
       while(true) { 
        $nwords = random_int(3, 15); 
        $words = self::random_values(self::$lorem, $nwords); 
        $frags[] = implode(' ', $words); 
        if(self::random_float() >= $commaChance) { 
         break; 
        } 
        $commaChance /= 2; 
       } 

       $sentences[] = ucfirst(implode(', ', $frags)) . '.'; 
      } 
      $paragraphs[] = implode(' ',$sentences); 
     } 
     return implode("\n\n",$paragraphs); 
    } 

    private static function random_float() { 
     return random_int(0, PHP_INT_MAX-1)/PHP_INT_MAX; 
    } 

    private static function random_values($arr, $count) { 
     $keys = array_rand($arr, $count); 
     if($count == 1) { 
      $keys = [$keys]; 
     } 
     return array_intersect_key($arr, array_fill_keys($keys, null)); 
    } 

    private static $lorem = [ 
     0 => 'lorem', 
     1 => 'ipsum', 
     2 => 'dolor', 
     3 => 'sit', 
     4 => 'amet', 
     5 => 'consectetur', 
     6 => 'adipiscing', 
     7 => 'elit', 
     8 => 'praesent', 
     9 => 'interdum', 
     10 => 'dictum', 
     11 => 'mi', 
     12 => 'non', 
     13 => 'egestas', 
     14 => 'nulla', 
     15 => 'in', 
     16 => 'lacus', 
     17 => 'sed', 
     18 => 'sapien', 
     19 => 'placerat', 
     20 => 'malesuada', 
     21 => 'at', 
     22 => 'erat', 
     23 => 'etiam', 
     24 => 'id', 
     25 => 'velit', 
     26 => 'finibus', 
     27 => 'viverra', 
     28 => 'maecenas', 
     29 => 'mattis', 
     30 => 'volutpat', 
     31 => 'justo', 
     32 => 'vitae', 
     33 => 'vestibulum', 
     34 => 'metus', 
     35 => 'lobortis', 
     36 => 'mauris', 
     37 => 'luctus', 
     38 => 'leo', 
     39 => 'feugiat', 
     40 => 'nibh', 
     41 => 'tincidunt', 
     42 => 'a', 
     43 => 'integer', 
     44 => 'facilisis', 
     45 => 'lacinia', 
     46 => 'ligula', 
     47 => 'ac', 
     48 => 'suspendisse', 
     49 => 'eleifend', 
     50 => 'nunc', 
     51 => 'nec', 
     52 => 'pulvinar', 
     53 => 'quisque', 
     54 => 'ut', 
     55 => 'semper', 
     56 => 'auctor', 
     57 => 'tortor', 
     58 => 'mollis', 
     59 => 'est', 
     60 => 'tempor', 
     61 => 'scelerisque', 
     62 => 'venenatis', 
     63 => 'quis', 
     64 => 'ultrices', 
     65 => 'tellus', 
     66 => 'nisi', 
     67 => 'phasellus', 
     68 => 'aliquam', 
     69 => 'molestie', 
     70 => 'purus', 
     71 => 'convallis', 
     72 => 'cursus', 
     73 => 'ex', 
     74 => 'massa', 
     75 => 'fusce', 
     76 => 'felis', 
     77 => 'fringilla', 
     78 => 'faucibus', 
     79 => 'varius', 
     80 => 'ante', 
     81 => 'primis', 
     82 => 'orci', 
     83 => 'et', 
     84 => 'posuere', 
     85 => 'cubilia', 
     86 => 'curae', 
     87 => 'proin', 
     88 => 'ultricies', 
     89 => 'hendrerit', 
     90 => 'ornare', 
     91 => 'augue', 
     92 => 'pharetra', 
     93 => 'dapibus', 
     94 => 'nullam', 
     95 => 'sollicitudin', 
     96 => 'euismod', 
     97 => 'eget', 
     98 => 'pretium', 
     99 => 'vulputate', 
     100 => 'urna', 
     101 => 'arcu', 
     102 => 'porttitor', 
     103 => 'quam', 
     104 => 'condimentum', 
     105 => 'consequat', 
     106 => 'tempus', 
     107 => 'hac', 
     108 => 'habitasse', 
     109 => 'platea', 
     110 => 'dictumst', 
     111 => 'sagittis', 
     112 => 'gravida', 
     113 => 'eu', 
     114 => 'commodo', 
     115 => 'dui', 
     116 => 'lectus', 
     117 => 'vivamus', 
     118 => 'libero', 
     119 => 'vel', 
     120 => 'maximus', 
     121 => 'pellentesque', 
     122 => 'efficitur', 
     123 => 'class', 
     124 => 'aptent', 
     125 => 'taciti', 
     126 => 'sociosqu', 
     127 => 'ad', 
     128 => 'litora', 
     129 => 'torquent', 
     130 => 'per', 
     131 => 'conubia', 
     132 => 'nostra', 
     133 => 'inceptos', 
     134 => 'himenaeos', 
     135 => 'fermentum', 
     136 => 'turpis', 
     137 => 'donec', 
     138 => 'magna', 
     139 => 'porta', 
     140 => 'enim', 
     141 => 'curabitur', 
     142 => 'odio', 
     143 => 'rhoncus', 
     144 => 'blandit', 
     145 => 'potenti', 
     146 => 'sodales', 
     147 => 'accumsan', 
     148 => 'congue', 
     149 => 'neque', 
     150 => 'duis', 
     151 => 'bibendum', 
     152 => 'laoreet', 
     153 => 'elementum', 
     154 => 'suscipit', 
     155 => 'diam', 
     156 => 'vehicula', 
     157 => 'eros', 
     158 => 'nam', 
     159 => 'imperdiet', 
     160 => 'sem', 
     161 => 'ullamcorper', 
     162 => 'dignissim', 
     163 => 'risus', 
     164 => 'aliquet', 
     165 => 'habitant', 
     166 => 'morbi', 
     167 => 'tristique', 
     168 => 'senectus', 
     169 => 'netus', 
     170 => 'fames', 
     171 => 'nisl', 
     172 => 'iaculis', 
     173 => 'cras', 
     174 => 'aenean', 
    ]; 
} 

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

Lorem::ipsum(5); 

Пример вывода:

""" 
Ligula ornare commodo elementum. Cursus gravida bibendum. Lacus integer auctor primis ad odio suscipit diam, justo feugiat hendrerit. Ipsum suspendisse nunc tempor ultrices orci odio potenti imperdiet netus fames. Viverra feugiat sollicitudin euismod commodo dui lectus magna sem aliquet cras, sit mattis vulputate enim eros. Interdum a primis orci arcu porttitor taciti. Maecenas mauris mollis purus nullam enim laoreet aliquet, maecenas feugiat auctor vulputate quam condimentum vehicula tristique. Consectetur mauris auctor sollicitudin.\n 
\n 
Sit at tincidunt lacinia nec tempus conubia bibendum fames. Justo massa odio. Sit praesent tincidunt nisi molestie cursus ornare tempus class duis, dolor vitae luctus eleifend ut curae hendrerit vulputate dui aptent litora suscipit dignissim, sed auctor ultricies dictumst vel. Etiam mattis a est phasellus felis posuere pharetra consequat platea taciti torquent neque nisl cras. Adipiscing in viverra a molestie fusce pretium tempus porta curabitur. Aptent risus nisl.\n 
\n 
Ipsum quisque auctor venenatis varius posuere hendrerit eu libero vel taciti ad conubia cras, placerat nec phasellus gravida aliquet. Dictum lacus leo facilisis ut quis gravida litora bibendum laoreet. Interdum tincidunt ac suspendisse venenatis nullam pretium hac himenaeos diam vehicula.\n 
\n 
Nulla eleifend varius hendrerit condimentum efficitur fames. Metus pulvinar pretium habitasse vivamus efficitur turpis porta rhoncus elementum netus. Mollis phasellus fusce nullam eu vel sodales duis.\n 
\n 
Ipsum egestas pulvinar tortor venenatis fusce consequat pellentesque class fermentum potenti suscipit diam tristique. Sit tellus magna. Lobortis venenatis quis nisi condimentum nostra ullamcorper. 
""" 

Это зависит от PHP 7's CSPRNG functions, который вы можете либо polyfill, либо sub out для mt_rand, если вы на PHP 5.x.

+1

Гораздо лучшее решение, чем использование (очень превосходное) loripsum.net –

Смежные вопросы