Подкиньте пару строк на php!? - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.7196
BTC/USD64528.7383
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 27.04.2012, 12:36   #1
seroja
𝕾𝕰𝕽𝕺𝕵𝕬
 
Аватар для seroja
 
Регистрация: 23.11.2007
Сообщений: 2,005
Бабло: $294407
По умолчанию Подкиньте пару строк на php!?

Ребят, кто шарит, есть такая задача:
PHP страница, на ней вот такой список строк

<a href="http://google.com/1">{search|images|maps|Calendar}</a>
<a href="http://google.com/2">{1|2|3|4}</a>
<a href="http://google.com/3">{A|B|C|D}</a>


Как мне выводить рандомно то что в {} ?

те. - <a href="http://google.com/1">search</a> <a href="http://google.com/2">4</a> <a href="http://google.com/3">B</a>

Кол-во Анкоров будет разное, от 1го до 20ти.
seroja вне форума  
Старый 27.04.2012, 12:56   #2
deschain
Senior Member
 
Аватар для deschain
 
Регистрация: 01.11.2007
Сообщений: 2,269
Бабло: $288535
По умолчанию

PHP код:
    $string '<a href="http://google.com/1">{search|images|maps|Calendar}</a>';
    
    echo 
spin_text($string);
    
    
    function 
spin_text($string) {
    
        if (
preg_match('/\{([^\}]*)\}/i'$string$random_words)) {
        
            
$random_words_array explode("|"$random_words[1]);
            if (
is_array($random_words_array)) {
                
shuffle($random_words_array);
                
$string preg_replace('/\{[^\}]*\}/i'$random_words_array[0], $string);
            }
        
        }    
    
        return 
$string;
    
    } 
deschain вне форума  
Старый 27.04.2012, 13:00   #3
seroja
𝕾𝕰𝕽𝕺𝕵𝕬
 
Аватар для seroja
 
Регистрация: 23.11.2007
Сообщений: 2,005
Бабло: $294407
ТС -->
автор темы ТС По умолчанию

Эх нет, работает только если 1 урл, на списке линков нет.
Берет анкор у первого линка и подсовывает ко всем остальным.

Последний раз редактировалось seroja; 27.04.2012 в 13:15.
seroja вне форума  
Старый 27.04.2012, 13:12   #4
deschain
Senior Member
 
Аватар для deschain
 
Регистрация: 01.11.2007
Сообщений: 2,269
Бабло: $288535
По умолчанию

seroja, сразу бы в аську стукнул, отписал бы там
deschain вне форума  
Старый 27.04.2012, 13:57   #5
primitive
Юниор
 
Регистрация: 04.08.2011
Сообщений: 13
Бабло: $4225
По умолчанию

PHP код:
$content '<a href="http://google.com/1">{search|images|maps|Calendar}</a> <a href="http://google.com/2">{1|2|3|4}</a> <a href="http://google.com/3">{A|B|C|D}</a>';
function 
spinaround($content)
{
    
preg_match_all('/{(.*)}/sU',$content,$matches);
    foreach (
$matches[0] as $k=>$v)
    {
        
$string $matches[1][$k];
        if ( 
preg_match_all('/\[(.*)\]/sU',$string,$stringmatches) )
        {
            foreach (
$stringmatches[0] as $l=>$w)
            {
            
$new explode('|',$stringmatches[1][$l]);
            
$new $new[array_rand($new)];
            
$string str_replace($w,$new,$string);
            }
        }
        
$new explode('|',$string);
        
$new $new[array_rand($new)];
        
$content str_replace($v,$new,$content);
    }
return 
$content;
}

echo 
spinaround($content); 
primitive вне форума  
Старый 04.05.2012, 17:41   #6
vilnus
Member
 
Регистрация: 12.02.2010
Сообщений: 41
Бабло: $7055
По умолчанию

PHP код:
$t "{этот|данный|сей} {суп|борщ} я испёк {сам|самостоятельно}!";
echo 
$t preg_replace_callback("/\{([^{}]*?)\}/ism""callback"$t);

function 
callback($matches) {
  
$v preg_split("/(?<!\|)\|(?!\|)/"$matches[1]);
  return 
$v[array_rand($v)];

vilnus вне форума  
Старый 30.05.2012, 12:57   #7
TixiDrixi
Юниор
 
Регистрация: 19.03.2011
Сообщений: 2
Бабло: $1210
По умолчанию

Цитата:
Сообщение от vilnus Посмотреть сообщение
PHP код:
$t "{этот|данный|сей} {суп|борщ} я испёк {сам|самостоятельно}!";
echo 
$t preg_replace_callback("/\{([^{}]*?)\}/ism""callback"$t);

function 
callback($matches) {
  
$v preg_split("/(?<!\|)\|(?!\|)/"$matches[1]);
  return 
$v[array_rand($v)];

красиво!
TixiDrixi вне форума