[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обработка Textarea
Страницы: 1, 2
Bolik
доброго вам времени суток,

тут такая проблема, пишу небольшой скрипт, в котором нужно обработать данные textarea. там могут быть только url, так что просто разбиваю на строки и обрабатываю построчно циклом.


$data=$_POST['domains'];
$line=explode("\n",$data);
$count=0;
while ($count<=count($line)) {
$url="http://www.sichtbarkeitsindex.de/".$line[$count];
$html=file_get_html($url);
$inhalt=$html->find('div[id="results"] h3', 0);


проблема в том, что если задавать один url, т.е. одна строка, то скрипт работает нормально и подгружает все данные, а если несколько строк, то обрабатывает или только последнюю строку правильно, или вообще ничего. проблема в форме? в цикле? или может в самом сайте http://www.sichtbarkeitsindex.de/?

заранее спасибо!
sergeiss
Перед циклом напиши такую строку:
echo '<pre>'.print_r( $line, 1),'</pre>';

и покажи тут результат обработки. И еще - тебе тут лучше будет использовать цикл foreach, а не while.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Bolik

Array
(
[0] => google.com
[1] => yandex.ru
)


сам цикл работает нормально, вот переписал с foreach. уже все циклы перепробовал)

$data=$_POST['domains'];
$lines=explode("\n",$data);
foreach ($lines as $line) {
$url="http://www.sichtbarkeitsindex.de/".$line;
$html=file_get_html($url);
$inhalt=$html->find('div[id="results"] h3', 0);

я так понял проблема в библиотеке simple_html_dom.php, т.к. выдает ошибку

Warning: file_get_contents(http://www.sichtbarkeitsindex.de/google.com ): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in C:\xampp\htdocs\Datenbanken\simple_html_dom.php on line 75

Fatal error: Call to a member function find() on a non-object in C:\xampp\htdocs\Datenbanken\url.php on line 25

пробовал через регулярку, та же самая история. обрабатывает только последнюю строку. нужно наверное как-то по-другому подгружать страницу...
sergeiss
Он тебе четко говорит, что не нашел тот самый файл, содержимое которого ты хочешь получить. При чему тут последняя/не последняя строка? И судя по твоим же словам, это не последняя, а первая строка. После ошибки просто "вылетает", не обрабатывает дальше.

Ты уверен, что есть такой файл http://www.sichtbarkeitsindex.de/google.com?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Bolik
ну конечно, кликни по урл, сам увидишь) в том и проблема, что если вводить адреса отдельно, по-одному, то все работает отлично, а если список, то вылетает.
walerus
Bolik С регуляркой пример покажи свой, все должно парсить.
Bolik
если делать через регулярку, то выдает такую картину:


Warning: file_get_contents(http://www.sichtbarkeitsindex.de/google.com ): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in C:\xampp\htdocs\Datenbanken\url.php on line 23

Notice: Undefined offset: 1 in C:\xampp\htdocs\Datenbanken\url.php on line 29
Si Fb Likes Fb Shares
google.com 1099462 3646040
yandex.ru 0,65 2449 6227

т.е. видно, что обработан только второй адрес. фейсбук работает без проблем почему-то)
Bolik

$data=$_POST['domains'];
$lines=explode("\n",$data);
foreach ($lines as $line) {
$url="http://www.sichtbarkeitsindex.de/".$line;
preg_match('/<h3>(.+)<\/h3>/',file_get_contents($url),$si);


вот регулярка
walerus
$lines = array( 'google.com', 'yandex.ru' );
foreach ($lines as $line)
{
$url="http://www.sichtbarkeitsindex.de/".$line;

$data = file_get_contents( $url );

preg_match( '~<div id="results">.*<h3>(.*)</h3>~s', $data, $match_result );

echo $line . ' - ' . trim( $match_result[1] ) . "<br>";
}


результ:
google.com - 157,24
yandex.ru - 0,65
Bolik
с твоим примером та же хрень, если оставить форму. а почему, не понятно. принцип ведь один и тот же, сначала пишем все в массив, а потом обрабатываем его.
walerus
показывай весь скрипт с формой...
Bolik

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Tool</title>
<
link rel="stylesheet" type="text/css" href="style.css" />
</
head>
<
body>

<?php
include 'simple_html_dom.php';
if (isset($_POST['domains'])) {
echo'<table class="domains">';
echo'<tr><td>'.'</td><td>'.'Si'.'</td>< /tr>';
$data=$_POST['domains'];
$lines=explode("\n",$data);
foreach ($lines as $line) {
$url="http://www.sichtbarkeitsindex.de/".$line;
$daten = file_get_contents( $url );
preg_match('/<h3>(.+)<\/h3>/',$daten,$si);
echo '<tr><td>'.$line.'</td><td>'.$si[1].'</td></tr>';
}
echo'</table>';
}

?>

<hr />
<
form accept-charset="utf-8" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<
label for="domains">List:</label>
<
textarea name="domains"></textarea>
<
hr>
<
input type="submit" value="Add" name="submit" />
<
br />
</
form>
</
body>
</
html>

вот.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.