Как использовать cURL для извлечения текста - PullRequest
1 голос
/ 25 июня 2010

Я пытаюсь получить / извлечь текст с другого URL, используя cURL. Место, откуда я беру текст, находится в пустом HTML-документе с динамическими (не статичными) данными, поэтому нет HTML-тегов для фильтрации. Это то, что у меня так далеко:

$c = curl_init('http://url.com/dataid='.$_POST['username']);
curl_setopt(CURLOPT_RETURNTRANSFER, true);
curl_setopt(CURLOPT_FRESH_CONNECT, true);

$html = curl_exec($c);

if (curl_error($c))
die(curl_error($c));

// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);

curl_close($c);

Это прекрасно работает, однако в конце динамического HTML-документа появляется ненужный текст " # endofscript " (без кавычек). Это можно получить / извлечь, так что можно сделать, чтобы не захватить это? Я пытался посмотреть на " strpos " и тому подобное, но я не уверен, как интегрировать это с cURL.

Все / Любая помощь будет / будет принята с благодарностью. :)

РЕДАКТИРОВАТЬ: код, который я сейчас использую:

<?php

$homepage = file_get_contents('http://stackoverflow.com/');

$result = substr("$homepage", 0, -12);

echo $result;

?>

Ответы [ 4 ]

2 голосов
/ 25 июня 2010

почему бы не использовать просто

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

http://php.net/manual/en/function.file-get-contents.php

1 голос
/ 25 июня 2010

Поскольку вы говорите, что этот плохой текст может добавить к выводу, вы можете использовать что-то вроде этого кода (оберните его в функцию для облегчения программирования):

<?php
define("bad_text", "#endofscript");

$feed_text = "here is some text#endofscript";
$bExist = false;
if(strlen($feed_text) >= constant("bad_text"))
{
    $end_of_text = substr($feed_text, strlen($feed_text) - strlen(constant("bad_text")));
    $bExist = strcmp($end_of_text, constant("bad_text")) == 0;
}

if($bExist)
    $final_text = substr($feed_text, 0, strlen($feed_text) - strlen(constant("bad_text")));
else
    $final_text = $feed_text;

echo $final_text;
?>
1 голос
/ 25 июня 2010

Вы можете использовать preg_replace (), чтобы удалить все строки, начинающиеся с "#", например:

$res = preg_replace('/^#.*$[\\r\\n]*/m','',$dat);

или просто

'/#endofscript$/'

чтобы соответствовать штуке в конце.

substr / str_replace / некоторые другие строковые функции также будут работать.


Пример кода, как реализовать метод substr / preg_replace:
<code><pre><?php

$dat = 'Lorem ipsum dolor sit amet,
        consectetur adipisicing 
        elit #endofscript';

// either
if (substr($dat,-12) == '#endofscript')
    $res = substr($dat,0,-12);

var_dump($res);

// or
$res = preg_replace('/#endofscript$/','',$dat);
var_dump($res);

?>
0 голосов
/ 25 июня 2010

Спасибо всем за помощь, я не могу сказать, насколько я ценю их! Используя скрипт, данный GOsha, мне удалось изменить его так, чтобы он удалял конечный текст. Используемый код выглядит следующим образом:

<?php

$homepage = file_get_contents('http://url.com/dataid='.$_POST['username']);

$rest = substr("$homepage", 0, -12);
echo $rest;

?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...