|
| Дата |
|
USD/RUB | 93.7196 | BTC/USD | 64528.7383 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
27.04.2012, 12:36
|
#1
|
𝕾𝕰𝕽𝕺𝕵𝕬
Регистрация: 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ти.
|
|
|
27.04.2012, 12:56
|
#2
|
Senior Member
Регистрация: 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; }
|
|
|
27.04.2012, 13:00
|
#3
|
𝕾𝕰𝕽𝕺𝕵𝕬
Регистрация: 23.11.2007
Сообщений: 2,005
Бабло: $294407
ТС -->
|
ТС
Эх нет, работает только если 1 урл, на списке линков нет.
Берет анкор у первого линка и подсовывает ко всем остальным.
Последний раз редактировалось seroja; 27.04.2012 в 13:15.
|
|
|
27.04.2012, 13:12
|
#4
|
Senior Member
Регистрация: 01.11.2007
Сообщений: 2,269
Бабло: $288535
|
seroja, сразу бы в аську стукнул, отписал бы там
|
|
|
27.04.2012, 13:57
|
#5
|
Юниор
Регистрация: 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);
|
|
|
04.05.2012, 17:41
|
#6
|
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)];
}
|
|
|
30.05.2012, 12:57
|
#7
|
Юниор
Регистрация: 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)];
}
|
красиво!
|
|
|
|