Это очень странная ошибка, я безуспешно пытаюсь ее исправить. Я пытаюсь проверить, содержит ли ссылка строку:
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
echo $actual_link;
Результат:
http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/
Потом:
if (strstr($actual_link,"plesk-site-preview") ){
echo"<meta name='robots' content='noindex'>";
}
Проблема в том, что strstr возвращает false, несмотря на то, что подстрока plesk-site-preview содержится в http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/.
Как я могу исправить эту ошибку?
Обновлено:
Я вставил перед if (strstr($actual_link,"plesk-site-preview") ){ следующую строку для тестирования:
$actual_link='http://xxx.xxx.xxx.xxx/plesk-site-preview/***********.com/xxx.xxx.xxx.xxx/';
Теперь код работает! Кажется, что строка, присвоенная переменной $ actual_link, теряется перед оператором IF.
@NineBerry, я вставил ваш код, но ошибка осталась! Обратите внимание, что мой код точен, и между echo $actual_link; и оператором IF больше нет строк кода.
Вы нашли ответ на этот вопрос>?
@Mawg, нет, я не могу исправить эту ошибку.
Вы пробовали проверить результат с помощью !== False? Это должно работать






документальный говорит
string strstr ( string $haystack , mixed $needle [, bool $before_needle = FALSE ] )
Returns part of haystack string starting from and including the first occurrence of needle to the end of haystack.
Returns the portion of string, or FALSE if needle is not found.
И вы кодируете
if (strstr($actual_link,"plesk-site-preview"))
Возможно, это должно быть
if (strstr($actual_link,"plesk-site-preview") != "")
поскольку он возвращает строку, а не логическое значение в случае успеха.
Хм, на самом деле было бы лучше
if (strstr($actual_link,"plesk-site-preview") !== FALSE)
Чтобы использовать строгую проверку типов, используйте !==
@Mawg Я заменил свой код на if (strstr($actual_link,"plesk-site-preview" != FALSE) ), но ошибка не исправлена! Также обратите внимание, что вы забыли ) в своем коде.
@NineBerry верна, != должен быть !==. Дело в том, что многие функции PHP возвращают FLASE в случае сбоя, и правильный способ тестирования - !== FALSE; это общий образец
Конечно, если бы вы использовали отладчик, вам бы не пришлось нас об этом спрашивать :-)
Если вам нужно проверить наличие подстроки в строке, вы можете использовать strpos, например:
if (strpos($actual_link, "plesk-site-preview")){
echo"<meta name='robots' content='noindex'>";
}
Этот способ лучше, потому что strpos быстрее, чем strstr
Я пробовал использовать ваш код, но ошибка не исправлена!
@Daniele, это условие правильное. Вы можете проверить это, например: if (strpos($actual_link, "plesk-site-preview")){ echo "Substing finded"; } Вам следует проверить другой код.
@Daniele, я это проверил. Мой код: $actual_link = "http://84.200.70.56/plesk-site-preview/***********.com/84.200.70.56/"; if (strpos($actual_link,"plesk-site-preview") ){ echo "Substring found"; } и он работает
Попробуйте напечатать переменную $ actual_link перед оператором if
strpos($actual_link, "plesk-site-preview") !== FALSE решит вашу проблему
Попробуйте
if (strstr($actual_link,"plesk-site-preview") !== FALSE ){