2011-08-06 9 views
0

これを行うための答えは長くて辛いものでした。&は何も出てこなかった。私はここに誰かが答えを持っていることを知っています。テキストファイルをPHP配列に置き換えて文字列を検索する

まず、私はURLを取得し、初めのうち、サブサイトをつかむ:URLはaffiliate1.domain.comある

<?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]; 
?> 

場合、これは$affとしてaffiliate1返します。私はアフィリエイトをハードコーディングしても、しかし

<?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" />'; 
?> 

:、私は配列にそのファイルを読み込むその後

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

次に、私は、各ライン上の別の名前でaffiliates.txtそれぞれを持っています名前にarray_search()

何も返されません。 私はここで何が間違っていますか?

答えて

3

各行は改行文字が含まれて、あなたは「ファイル」機能にフラグを提供することで、それらを無視することができます:私よりも優れ

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

ああ、すべての値をトリミングするソリューション。私はそのオプションを知らなかった、それを指摘してくれてありがとう。 – EdoDodo

+0

WOO!それがそれでした。 **素晴らしい!** – joshmax

0

末尾の空白文字と改行文字を削除するには、配列内のすべての値をトリミングしてみてください。これはそれを行うための最も簡単な方法です:

array_walk($affs, create_function('&$val', '$val = trim($val);')); 
関連する問題