Использование массива в качестве аргумента для функции - PullRequest
1 голос
/ 03 августа 2010

Код внутри функции работает, но так как я хочу обработать более одного URL-адреса, я хотел сделать его функцией, использующей массив для получения URL-адресов для обработки.Вот код:

    <?php
$site = array("http://www.ihr-apotheker.de/cs1.html", "http://www.ihr-apotheker.de/cs2.html", "http://www.ihr-apotheker.de/cs3.html");

function parseNAI($sites)
  {
  foreach ($sites as $html)
    {
      $clean_one = strstr($html, '<p>');
      $clean_one_class = str_replace('<p><span class="headline">', '<p class="headline gruen"><span>', $clean_one);
      $clean_one_class_a = strip_tags($clean_one_class, '<p><span><a>');
      $clean_one_class_b = preg_replace("/\s+/", " ", $clean_one_class_a);
      $str_one = preg_replace('#(<a.*>).*?(</a>)#', '$1$2', $clean_one_class_b);
      $ausgabe_one = strip_tags($str_one, '<p>');
      echo $ausgabe_one;
    } 
  };
parseNAI($site);
?>

Где моя проблема, так как функция перестает работать в начале foreach .... Заранее спасибо за вашу помощь!

Ответы [ 3 ]

5 голосов
/ 03 августа 2010

У меня такое ощущение, что вы пропускаете шаг туда ... может быть, file_get_contents или что-то подобное? Сейчас вы запускаете несколько строковых функций на самом URI, а не на источнике в URI.

Попробуйте вместо этого:

<?php
$site = array("http://www.ihr-apotheker.de/cs1.html", "http://www.ihr-apotheker.de/cs2.html", "http://www.ihr-apotheker.de/cs3.html");

function parseNAI($sites)
{
    foreach ($sites as $url)
    {
        $html = file_get_contents($url);
        $clean_one = strstr($html, '<p>');

        $clean_one_class = str_replace('<p><span class="headline">', '<p class="headline gruen"><span>', $clean_one);
        $clean_one_class_a = strip_tags($clean_one_class, '<p><span><a>');
        $clean_one_class_b = preg_replace("/\s+/", " ", $clean_one_class_a);
        $str_one = preg_replace('#(<a.*>).*?(</a>)#', '$1$2', $clean_one_class_b);
        $ausgabe_one = strip_tags($str_one, '<p>');
        echo $ausgabe_one;
    } 
};
parseNAI($site);

?>
0 голосов
/ 03 августа 2010

Эта строка возвращает '', поскольку в ваших строках URL нет тега p ..

$clean_one = strstr($html, '<p>');

Что вы пытаетесь сделать?Если вы пытаетесь получить содержимое этих сайтов, используйте file_get_contents () или аналогичные функции для получения содержимого URL.

0 голосов
/ 03 августа 2010

вместо того, чтобы передавать массив, почему бы не пройти через ваш массив и не передать каждый элемент функции?- несколько обращений к одной и той же функции ...

Судя по тому, что вы выполняете, не следует ли вам удалять содержимое страницы eahc, а не только URL-адрес ???

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