2012-01-16 3 views
0

Какую функцию php-массива следует использовать для сопоставления строки с первой частью строки с разделителями и вернуть вторую часть разделительной строки? Причина, по которой я использую массив, состоит в том, что у меня есть много разделимых текстовых строк в файле. например:Какая функция массива PHP должна использоваться для сопоставления строки с первой частью лимитированной строки и возврата второй части разделительной строки

contact-us.php = Contact Us- Test Bed 

мне нужен какой-то способ, чтобы соответствовать страницы имя файла в первой части, ограниченной линией, и вернуть его второй части. Я пробовал несколько различных функций массива, но я не знаю, какой из них использовать или как реализовать функцию массива, предполагая, что я нашел правильный. Это код, который я разработал, и он находится в начале файла php. Как только правильный заголовок страницы будет выбран, я просто напечатаю его в тегах заголовка.

function getPageName() 
{ 
    return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); // If one echo's this and the url is /TestBed/contact-us.php Output will be: contact-us.php 
} 

function pageTitleIdentifier() 
{ 
    $filename = 'http://localhost/TestBed/includes/apptop/title.txt'; 
    $mode = 'rb'; 
    $file_handle = fopen ($filename, $mode); 

    while (!feof($file_handle)) { 
     $page_title_pair = fgets($file_handle); // This will start reading where the above while loop stopped line by line. 
     $parts = explode('=', $page_title_pair); 
     @ $pageTitle = $parts[0] . $parts[1]; // Part zero is the filename ex contact-us.php Part one is the Title ex Contact Us- Test Bed for that page. 
    } 

    fclose($file_handle); 
} 

Итак, каков правильный способ сделать это? Большое спасибо!

ответ

0

Прежде всего, вы можете рассмотреть возможность внедрения кэширующего решения. Для анализа файла для КАЖДОГО запроса на сервере с высоким трафиком обязательно добавьте ненужную нагрузку.

Попробуйте это:

function pageTitleIdentifier() 
{ 
    $filename = 'http://localhost/TestBed/includes/apptop/title.txt'; 
    $mode = 'rb'; 
    $file_handle = fopen ($filename, $mode); 

    while (!feof($file_handle)) { 

     $page_title_pair = fgets($file_handle); 

     list($script, $title) = explode('=', $page_title_pair); 

     // Uncomment below lines for debugging, they must line up exactly 
     // for the condition to be met, breaking the loop 
     // var_dump($script); 
     // var_dump(getPageName(); 

     // Because we reading from a file, might be some whitespace issues 
     // trim and strtolower ensures a true apples to apples comparison 
     if (trim(strtolower($script)) === trim(strtolower(getPageName()))) { 
      return $title; 
     }    
    } 

    fclose($file_handle); 
} 
+0

@MindMaster: Помогла ли эта работа для вас? –

+0

Хм. Это не работает. Он не дает никаких ошибок, даже если он установлен для «уведомления». Я изменил одну строку на этот 'print_r (список ($ page, $ title) = explode ('=', $ page_title_pair);' Он печатает это: Array ([0] => index.php [1] => Тестовая кровать) Массив ([0] => news.php [1] => News- Test Bed) Массив ([0] => contact-us.php [1] => Свяжитесь с нами- Test Bed) Массив ([0 ] => about.php [1] => About-Test Bed) Каждая строка представляет собой новый массив, но я думаю, что $ script проверяется после того, как весь файл был прочитан как $ title. Как я могу изменить его так, чтобы читалась только одна строка, и ТОГДА было сделано сравнение? – MindMaster

+0

Сделайте var_dump (getPageName()) и опубликуйте результаты. –