помогите пхп немного ))

Сергей Владимирович
На сайте с 24.08.2008
Offline
121
1399

В общем стоит такая задача если в урл страницы есть вхождение "rabota-v-yuzhnoj-koree" то показать 1 текст. если нету то другой

Значит пишу вот такой код

<?

$serverrr =$_SERVER['REQUEST_URI'];

$matchhh="rabota-v-yuzhnoj-koree";

if (preg_match("$matchhh", "$serverrr")) {

echo "1";

} else {

echo "2";

}

?>

переменная $sereverrr = http://*************.ru/kompanii/rabota-v-yuzhnoj-koree.html

переменная $matchhh = rabota-v-yuzhnoj-koree

но почему то на всех страницах выдает 2, т.е даже если в урл нет rabota-v-yuzhnoj-koree например http://*************.ru/kompanii/123.html )= что я делаю не так ?

Массовый постинг на AVITO.RU | IRR.RU (http://job.consultant-plus.com/)
S
На сайте с 23.05.2004
Offline
315
#1

1 - для начала, зачем переменные в кавычках ?

2 - потом, просто вывести их перед сравнением и посмотреть чему они равны.

3 - а какой результат еще нужен, если строка не найдена ?


if (preg_match('/rabota-v-yuzhnoj-koree/', $_SERVER['REQUEST_URI'])) {
echo "Нашел";
} else {
echo "Не нашел";
}
Это просто подпись.
Сергей Владимирович
На сайте с 24.08.2008
Offline
121
#2

да я не умею , надо было срочно а прогера не было на линии, вот и наговнокодил как могу :) , спасибо все работает.

S
На сайте с 13.10.2014
Offline
171
#3

можно было поступить еще проще

if (strpos ($_SERVER['REQUEST_URI'],'rabota-v-yuzhnoj-koree') !== FALSE ){

}

правда в данном случае оно еще сработает на 'plohaya-rabota-v-yuzhnoj-koree' впрочем, как и регулярка

TF-Studio
На сайте с 17.08.2010
Offline
334
#4
если в урл страницы есть вхождение
правда в данном случае оно еще сработает на 'plohaya-rabota-v-yuzhnoj-koree' впрочем, как и регулярка

по ТЗ все норм. в формулировку вписались.

strpos - лучше чем регулярка

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
Сергей Владимирович
На сайте с 24.08.2008
Offline
121
#5

Решил доработать творение автора под ником Stek ))) и заодно не нмого разобраться в пхп

Если ифоф несколько ?

У меня сейчас вот так

<?

if (preg_match('/rabota-v-yuzhnoj-koree/', $_SERVER['REQUEST_URI']))

{echo "<div class=\"link\"><p style=\"text-align: center;\"> <a href=\"#\"><h4>КОНСУЛЬТАЦИИ ПО НОМЕРУ 123456789</h4></a></p></div>";}

if (preg_match('/rezyume/', $_SERVER['REQUEST_URI']))

{echo "<div class=\"link\"><p style=\"text-align: center;\"> <a href=\"#\"><h4>ПОЛУЧИТЬ КОНТАКТЫ РЕЗЮМЕ</h4></a></p></div>";}

else

{echo "<div class=\"link\"><p style=\"text-align: center;\"> <a href=\"#\"><h4>ОТПРАВИТЬ РЕЗЮМЕ</h4></a></p></div>";}

?>

работает но как то странно странность в том что если в урле есть вхождение rabota-v-yuzhnoj-koree

выдает 2 значения

КОНСУЛЬТАЦИИ ПО НОМЕРУ 123456789

ОТПРАВИТЬ РЕЗЮМЕ

Если вхождение rezyume то работает корректно, если нет ни того ни того то тоже работает корректно.

Такой вариант меня вполне устраивает, просто не понятно почему 2 значения выдается когда вхождение rabota-v-yuzhnoj-koree, почему он в елсе уходит если сработал иф ?

Russ1an
На сайте с 25.03.2015
Offline
84
#6

Погуглите про elseif

if () {} elseif () {} else {}

danforth
На сайте с 18.12.2015
Offline
153
#7

Сергей Владимирович, рекомендую вам не использовать short_open_tag. <? заменяйте на полный <?php. В 7 версии директива по умолчанию выключена, и будет боль, когда обновитесь до PHP7, а все сломается.

Junior Web Developer
Aisamiery
На сайте с 12.04.2015
Offline
319
#8
Сергей Владимирович:

почему он в елсе уходит если сработал иф ?


// Проверяем есть ли в урле нужное, если ДА то выводим
if (preg_match('/rabota-v-yuzhnoj-koree/', $_SERVER['REQUEST_URI'])) {
echo "...";
}

// Проверяем в урле нужно если да выводим первное, нет второе
if (preg_match('/rezyume/', $_SERVER['REQUEST_URI'])) {
echo "...";
} else {
echo "....";
}

Когда научитесь правильно форматировать код, читать и понимать его станет куда легче. В данном случае у вас всегда будет два вывода если сработает первый IF, потому что второй иф покажет одно из 2х значений всегда

Так же есть альтернативный, шаблонный вариант вывода php который упрощает чтение шаблона


<?php if (preg_match('/rabota-v-yuzhnoj-koree/', $_SERVER['REQUEST_URI'])) : ?>
<div class="link">
<p style="text-align: center;">
<a href="#">
<h4>КОНСУЛЬТАЦИИ ПО НОМЕРУ 123456789</h4>
</a>
</p>
</div>
<?php endif; ?>

<?php if(preg_match('/rezyume/', $_SERVER['REQUEST_URI'])): ?>
<div class="link">
<p style="text-align: center;">
<a href="#">
<h4>ПОЛУЧИТЬ КОНТАКТЫ РЕЗЮМЕ</h4>
</a>
</p>
</div>
<?php else: ?>
<div class="link">
<p style="text-align: center;">
<a href="#">
<h4>ОТПРАВИТЬ РЕЗЮМЕ</h4>
</a>
</p>
</div>
<?php endif; ?>

Разобрав его становится понятно что и с версткой у вас тоже проблем достаточно много, вы нарушили все что можно было нарушить в данно контексте 😂

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS

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