将文本文件导入PHP数组&搜索字符串

时间:2011-08-06 18:34:17

标签: php arrays text-files

我一直在努力寻找这样做的答案。什么都没有。我知道有人会有答案。

首先,我获取了URL并从头开始抓取子网站:

<?php
// get page URL
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
// get host name from URL
    $url = preg_replace('(https?://)', '', $pageURL);
    $affUrl = explode('.', $url);
    $aff = $affUrl[0];
?>

如果网址为affiliate1.domain.com,则会将affiliate1作为$aff返回。

接下来,每行affiliates.txt都有不同的名称:

affiliate1
affiliate2
affiliate-3 (yes, this is correct)

然后,我将该文件读入数组:

<?php
// read affiliates.txt and create array
    $affs = file("affiliates.txt"); 

// search for affiliate in array
    $inarray = array_search($aff, $affs); // i've tried in_array() also
    if ($inarray !== false) echo '<img src="affiliatelogos/$aff.jpg" class="aff-img" alt="$aff" />';
?>

但是,即使我将会员名称硬编码到array_search()

    $inarray = array_search('affiliate1', $affs);

它什么都不返回。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

每一行都包含一个换行符,你可以通过为“file”函数提供一个标志来忽略它们:

$affs = file('affiliates.txt', FILE_IGNORE_NEW_LINES);

答案 1 :(得分:0)

尝试修剪数组中的所有值以删除尾随空格和换行符。这是最简单的方法:

array_walk($affs, create_function('&$val', '$val = trim($val);'));