[PHP] Замена слова в тексте на ссылку

AX
На сайте с 20.09.2008
Offline
133
6023

Собственно нужна помощь специалиста, т.к не могу до конца догнать тему:

Есть строка текста, есть массив ссылок, необходимо заменить каждое третье слово на это же слово на взятое в линк с ссылкой из массива.

Что есть:


$ar=file('./pages/'.$_GET['id'].'.txt');//загрузка массива строк
$data='текст текст1 текст2 текст3 текст4';//чтение строки в переменную
$txt=explode(' ', $data);//разбор строки текста на элементы-слова
$xx=count($txt); //подсчет количества элементов-слов
$t=0;
while ($t<$xx)
{
if ($xx % 3 != 0)
{echo $txt[$t]; echo ' ';} //вывод слова если оно не каждое третье
else{
if ($t<count($ar)) { //проверка на то, что ссылки не закончились
echo '<a href="'.$ar[$t].'">'.$txt[$t].'</a>'; echo ' '; //вывод линка с ссылкой и анкором текущего слова
}
else echo $txt[$t]; echo ' ';} //если ссылки кончились, то вывод слова без линка
$t++;
};

В общем :(

V
На сайте с 03.12.2007
Offline
94
#1

в каком виде строки здесь?

$ar=file('./pages/'.$_GET['id'].'.txt');//загрузка массива строк

и что выводит скрипт?

AX
На сайте с 20.09.2008
Offline
133
#2

Строки в виде урл сайта.

Сначала выводит линки, а потом уже весь текст =(

FeoOne
На сайте с 27.12.2008
Offline
32
#3

<?
$links = array('http://google.ru', 'http://ya.ru', 'http://mail.ru');
$text = 'текст0 текст1 текст2 текст3 текст4 текст5 текст6 текст7 текст8';

$counter = 0;

$txt = explode(' ', $text);
for($i=0; $i<count($txt); $i+=3) {
$txt[$i] = isset($links[$counter]) ? '<a href="'.$links[$counter].'">'.$txt[$i].'</a>' : $txt[$i];
$counter++;
}

$text = implode(' ', $txt);
echo $text;
?>
V
На сайте с 03.12.2007
Offline
94
#4

чтобы начинало с 3-го, а не с первого:


for($i=1; $i<=count($txt); $i+=3) {
FeoOne
На сайте с 27.12.2008
Offline
32
#5

vavenko,

$i<=count($txt);

не существует ячейки $txt[count($txt)]

AX
На сайте с 20.09.2008
Offline
133
#6

Все, спасибо большое, проблема решена!

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