разбить переменную с ссылками на два (php)

U
На сайте с 24.02.2009
Offline
116
948

есть переменная - которая содержит n число ссылок

вида <a title="заголовок" href="http://www.site.ru/skidki">сайт</a> <a title="заголовок" href="http://www.site2.ru/skidki">сайт2</a>

<a title="заголовок" href="http://www.site3.ru/skidki3">сайт3</a>

мне нужно разбить содержание переменной на 2 части

чтобы были две переменных

допустим было 7 ссылок в переменной

$link1 ="тут первые 3 ссылки например"

$link2 ="тут остаток ссылок - например 4"

как мне это красивее сделать?

IL
На сайте с 20.04.2007
Offline
435
#1

можно разбить строку по '<a\s', (при склейке не забыть добавить символы "<a")

или strpos + substr ..

p.s. что-то вроде <?php echo $sape->return_links(4); ?> не подойдёт?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
U
На сайте с 24.02.2009
Offline
116
#2
ivan-lev:
можно разбить строку по '<a\s', (при склейке не забыть добавить символы "<a")

или strpos + substr ..

p.s. что-то вроде <?php echo $sape->return_links(4); ?> не подойдёт?

не, это не сапа:)

bay_ebook
На сайте с 28.05.2010
Offline
111
#3


$str = '<a title="заголовок" href="http://www.site.ru/skidki">сайт</a> <a title="заголовок" href="http://www.site.ru/skidki">сайт</a>';

$str = explode("</a>", $str);
$newstr = array(0 => array(), 1 => array(), 2 => array());
$f1 = 5;
$f2 = 4;
if(sizeof($str) > 0){
foreach($str AS $k => $v){
if($k >= 0 && $k < $f1){
$newstr[0][] = trim($v).'</a>';
}elseif($k >= $f1 && $k < $f2){
$newstr[1][] = trim($v).'</a>';
}else{
$newstr[2][] = trim($v).'</a>';
}
}
$newstr[0] = join("<br>", $newstr[0]);
$newstr[1] = join("<br>", $newstr[1]);
$newstr[2] = join("<br>", $newstr[2]);
}

echo $newstr[0];

echo $newstr[1];

echo $newstr[2];

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
U
На сайте с 24.02.2009
Offline
116
#4
bay_ebook:

$str = '<a title="заголовок" href="http://www.site.ru/skidki">сайт</a> <a title="заголовок" href="http://www.site.ru/skidki">сайт</a>';

$str = explode("</a>", $str);
$newstr = array(0 => array(), 1 => array(), 2 => array());
$f1 = 5;
$f2 = 4;
if(sizeof($str) > 0){
foreach($str AS $k => $v){
if($k >= 0 && $k < $f1){
$newstr[0][] = trim($v).'</a>';
}elseif($k >= $f1 && $k < $f2){
$newstr[1][] = trim($v).'</a>';
}else{
$newstr[2][] = trim($v).'</a>';
}
}
$newstr[0] = join("<br>", $newstr[0]);
$newstr[1] = join("<br>", $newstr[1]);
$newstr[2] = join("<br>", $newstr[2]);
}

echo $newstr[0];

echo $newstr[1];

echo $newstr[2];

вот спасибо!

siv1987
На сайте с 02.04.2009
Offline
427
#5

может не так красиво, но все же

preg_match_all( '/<a[^>]+href=["\'].*?["\'][^>]*>.*?<\/a>/', $str, $out );

U
На сайте с 24.02.2009
Offline
116
#6
siv1987:
может не так красиво, но все же
preg_match_all( '/<a[^>]+href=["\'].*?["\'][^>]*>.*?<\/a>/', $str, $out );

а как потому выводить в разных переменных разное число ссылок?

AGRESSOR
На сайте с 04.07.2010
Offline
79
#7
ufaclub:
а как потому выводить в разных переменных разное число ссылок?

через массив

siv1987
На сайте с 02.04.2009
Offline
427
#8
ufaclub:
а как потому выводить в разных переменных разное число ссылок?


$out = explode( '</a>', $str );
$size = count($out);
$links = array();
if( $size ){
$out = array_map( 'trim', $out );
$div = round($size/2);
$div = ($div > 1) ? $div : 1;
$links = array_chunk( $out, $div );
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий