2011-08-06 60 views
0

我搜索了很長時間並且很難回答這個問題&什麼都沒有提出。我知道這裏有人會有答案。將文本文件轉換爲PHP數組並搜索字符串

首先,我得到的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]; 
?> 

如果URL 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); 

它什麼都不返回。 我在這裏做錯了什麼?

回答

3

每行包括換行符,您可以通過提供一個標誌,「文件」功能忽略它們:

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

啊,甚至比好我的修剪所有值的解決方案。我不知道這個選項,謝謝指出。 – EdoDodo

+0

WOO!那樣做了。 **精彩!** – joshmax

0

嘗試修剪數組中的所有值以刪除尾隨空白和換行符。這是做的最簡單的方法:

array_walk($affs, create_function('&$val', '$val = trim($val);')); 
相關問題