使用Array作为函数的参数

时间:2010-08-02 21:41:41

标签: php arrays function

函数内部的代码正在运行,但由于我想要处理多个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 个答案:

答案 0 :(得分:5)

我觉得你错过了一步...可能是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);

?>

答案 1 :(得分:0)

而不是传递数组为什么不循环遍历数组并将每个元素传递给函数? - 多次调用同一个函数......

根据你的功能来判断,你不应该抓取eahc页面的内容而不仅仅是URL ???

答案 2 :(得分:0)

此行返回'',因为您的网址字符串中没有p标记..

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

你想做什么?如果您尝试获取这些网站的内容,请使用file_get_contents()或类似功能来获取网址内容。