2016-10-31 6 views
0

В настоящее время я работаю над созданием файла Sitemap для сценария авто-контент-генератора. Я узнал, что Google принимает карту сайта в простом текстовом файле, который содержит по одному URL на строку.fwrite, если строка не существует в файле

поэтому я создал файл с именем 1.txt и написал сценарий для добавления текущего URL-адреса страницы до 1.txt при посещении пользователем.

test.php является:

$file = 'assets/sitemap/1.txt'; 
$url = "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]."\n"; 
$file = fopen($file, 'a'); 
fwrite($file, $url); 
fclose($file); 

Этот сценарий записывает страницу URLto 1.txt каждый раз, когда кто-то попадает на страницу. Но проблема в том, что она создает слишком много дублирующих ссылок. Поэтому я хочу добавить фильтр, чтобы не добавлять строку (URL в этом случае), если она уже существует.

После серфинга в то время как я получил решение здесь (второй фрагмент), который является рациональное использование ресурсов: PHP check if file contains a string

Я сделал следующее изменение, но оно не работает (вообще ничего не добавляя):

$file = 'assets/sitemap/1.txt'; 
$url = "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]."\n"; 
if(exec('grep '.escapeshellarg($url).' assets/sitemap/1.txt')) {} 
else{ 
    $file = fopen($file, 'a'); 
    fwrite($file, $url); 
    fclose($file); 
} 

ответ

0

Это, надеюсь, легче понять:

$file = 'assets/sitemap/1.txt'; 
$url = "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]."\n"; 

$text = file_get_contents($file); 

if(strpos($text, $url) === false) { 
    file_put_contents($file, $url, FILE_APPEND); 
} 
  • Читать содержимое файла я Nto строку $text с помощью file_get_contents()
  • Проверьте, $url в строке $text с помощью strpos()
  • Если $url не в строке $text, добавьте $url в файл, используя file_put_contents()

Подсчитать общее количество строк , вы можете начать использовать file() для загрузки строк файла в массив. Затем проверьте, если $url находится в массиве с помощью in_array():

$lines = file($file); 
$count = count($lines); // count the lines 

if(!in_array($url, $text)) { 
    file_put_contents($file, $url, FILE_APPEND); 
    $count++; // if added, add 1 to count 
} 
+0

это также добавить ссылку на 1.TXT рядом проверка существования струны? – Kubloy

+0

Что говорит 3-я марка? – AbraCadaver

+0

append = писать может быть? – Kubloy

Смежные вопросы