Помогите с условием в php

.mia
На сайте с 06.01.2008
Offline
74
611

Вывод 5 случайных записей из текстового файла:

$num_of_mes = 5;
$messages_array = file("/texts.dat");

srand ((double) microtime() * 10000000);
$rand_keys = array_rand($messages_array,$num_of_mes);

echo "<table width=100% border=0>";
for($m=0;$m<$num_of_mes;$m++)
{
if($num_of_mes==1)
{
echo "<tr><td><u>".$messages_array[$rand_keys]."</u></td></tr>";
}
else
{
echo "<tr><td>".$messages_array[$rand_keys[$m]]."</td></tr>";
}
}
echo "</table>";

Необходимо добавить условие, если адреса страниц совпадают, т.е. ссылка на саму себя, то не выводить данную запись из общего списка.

VE
На сайте с 17.08.2006
Offline
76
#1

А уточните, плз, формат текстового файла с записями? Ну пару-тройку строк.

.mia
На сайте с 06.01.2008
Offline
74
#2
view'er:
А уточните, плз, формат текстового файла с записями? Ну пару-тройку строк.

text.dat:

<a href="/link1.html">Текст1</a>

<a href="/link2.html">Текст2</a>

<a href="/link3.html">Текст3</a>

...

VE
На сайте с 17.08.2006
Offline
76
#3

Ок. А урл какого вида?

И - это реально записи, типа заголовок новости с сылкой, или это просто текстовый файлик написаный ручками?

Z
На сайте с 17.09.2010
Offline
34
#4

если правильно понял задачу...

то вам нужно сравнить значение $_SERVER['REQUEST_URI'] с ссылкой из $messages_array[$rand_keys[$m]] которую можно вытащить каким нибудь preg_match('/<a href="(.*?)">.*?<\/a>/si', $messages_array[$rand_keys[$m]], $link);

соотвественно условие должно выглядеть примерно так:

if ($_SERVER['REQUEST_URI'] != $link[1]){

//далее код

}

VE
На сайте с 17.08.2006
Offline
76
#5

Ок. Чисто теоретически.

Предположение:

http://www.site.tld/article-4.html (пользукм чпу - $use_url_alias = TRUE)

http://www.site.tld/article.php?article_id=4

articles.dat

article_id|article_title

1|title_1

2|title_2

...

n|title_n

Предположение:

Чтобы попасть на страницу, где вы собираетесь выводить такой список, где-то формируется ссылка на нее (странно, если она пишется руками).

Т.е. перейдя на эту страницу, мы имеем id этой страницы. Например,

$article_id = 4;

Далее:


$articles_arr = file(articles.dat);
$out_str = '';

// есть ли вообще записи
if (count($articles_arr) > 0)
{
$tmp_arr = array();

foreach ($articles_arr as $item)
{
list($id, $aricle_title) = explode('|', $item);
if ($id != $article_id)
{
array_push($tmp_arr, $item);
}
}

// отобрали мы что-нибудь?
if (count($tmp_arr) > 0)
{
// перемешаем
shuffle($tmp_arr);

$out_str .= '<ul>';

for ($i=0; $i<$num_of_mes; $i++)
{
if (isset($tmp_arr[$i]))
{
list($id, $article_title) = explode('|', $tmp_arr[$i]);

// если пользуем чпу
if ($use_url_alias)
{
$out_str .= '<li><a href="/article-'. $id .'.html">'. trim(stripslashes($article_title)) .'</a></li>';
}
else
{
$out_str .= '<li><a href="/article.php?article_id='. $id .'">'. trim(stripslashes($article_title)) .'</a></li>';
}
}

} // end for

$out_str .= '</ul>';
}

}

echo out_str;

Если я что-то недопонял из задачи, то тогда по совету zerocube

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

Если всё как описано, достаточно раскидать примерно такие строчки в нужные места:


$uri_with_quotes = '"'.$_SERVER['REQUEST_URI'].'"';
//
if (strpos($messages_array[$rand_keys],$uri_with_quotes)) continue;
//
if (strpos($messages_array[$rand_keys[$m]],$uri_with_quotes)) continue;

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )

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