как отобразить данные, которые мы читаем с file_get_contents - PullRequest
0 голосов
/ 14 апреля 2010

Я хочу проверить содержимое страницы удаленного URL. Если содержимое страницы удаленного сайта содержит строку http://yahoo.com, установите $ qqq = YH, если не содержит $ qqq = NOYH. я не говорю о "URL этой страницы" я говорю о содержании страницы URL

$url = "'".$get['url']."'";
$needle = "http://yahoo.com/";
$contents = file_get_contents($url);
if(stripos($contents, $needle) !== false) {
    $qqq = "YH";
}

Но это не работает. Кто-нибудь может мне помочь с правильным синтаксисом? спасибо ..

Ответы [ 5 ]

2 голосов
/ 14 апреля 2010
$url = $get['url'];
$needle = "http://yahoo.com/";
$contents = file_get_contents($url);
if(stripos($contents, $needle) !== false) {
  $qqq = "YH";
  echo $qqq; // <--in order to echo, you need to call echo.
}

Если ваша цель просто повторить YH, если он существует, вы можете просто вызвать его напрямую с помощью

echo "YH";

Вместо того, чтобы хранить его в переменной.

1 голос
/ 14 апреля 2010

Кажется, ваш код не будет работать. По ряду причин:

  1. В первой строке вы создаете строку, содержащую одинарные кавычки. В общем, $url содержит что-то вроде 'http://url.here'. Если вы передадите это file_get_contents, вы получите ошибку:

    $url = "'http://www.google.com'";
    echo file_get_contents($url);
    
    Warning: file_get_contents('http://www.google.com/'): failed to open stream: 
    No such file or directory in ...
    
  2. Вы сказали, что хотите проверить, содержит ли $url определенную строку. Но вы проверяете, содержит ли документ , на который указывает URL, эту строку.

3. Может быть, вы имеете в виду $_GET вместо $get для получения параметра url, который содержится в URL?

Хорошо, я прочитал из комментариев, что вы действительно хотите найти строку в контенте . Тем не менее, первая строка кода неверна, так что это, вероятно,:

$needle = "http://yahoo.com/";
$contents = file_get_contents($get['url']);
if(stripos($contents, $needle) !== false) {
    $qqq = "YH";
}

(<?= $qqq ?> должно работать как есть).

1 голос
/ 14 апреля 2010

Кажется, есть некоторая путаница с вашим вопросом и названием.

Чтобы ответить "если $ url содержит http://yahoo.com/", то будет делать следующее:

$url = "'".$get['url']."'";
$needle = "http://yahoo.com/";
if(stripos($url, $needle) !== false) {
  $qqq = "YH";
}

Конечно, вы можете использовать <?=$qqq?> для вывода результата.

0 голосов
/ 13 мая 2010

Убедитесь, что у вас есть предупреждения PHP - вы все равно должны всегда устанавливать error_reporting(E_ALL) в среде разработки.

Убедитесь, что вы разрешили URI в качестве параметров для fopen функций на основе allow_url_fopen - http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

0 голосов
/ 15 апреля 2010

Вам нужно отладить, поэтому разбивайте его шаг за шагом:

<?PHP
// make sure you see any errors (remove this later)
error_reporting(E_ALL);
ini_set('display_errors',1);

$url = $get['url'];
die($url);
?>

Правильно ли указан URL?

<?PHP
// make sure you see any errors (remove this later)
error_reporting(E_ALL);
ini_set('display_errors',1);

$url = $get['url'];
die(file_get_contents($url));
?>

Ваш сценарий повторяет то, что выглядит как ответ от $ url?

Затем продолжите сборку и тестирование ...

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

Надеюсь, этот ответ отправит вас в правильном направлении.

...