2013-08-12 4 views
0

나는라는 파일 file.txt를이 있고 나는이 텍스트가 내부 :PHP 선택 임의의 두 번째 값

Text 1 
Vivamus arcu neque, ullamcorper vel eleifend id, euismod viverra nisi. 

Text 2 
Cras posuere neque vitae fringilla lobortis. 

Text 2 
Phasellus eu sapien sit amet diam eleifend ultricies a vitae tellus. 

Text 3 
Nulla at ipsum et quam euismod porttitor sit amet sed odio. 

내가 그 라인에서이 파일을 '텍스트 2'라인과 설명에서 선택합니다.

임의의 '텍스트 2'행과 그 설명을 모두 선택하고 싶습니다. 나는 그것을 깨뜨리려고했지만 그것은 단지 첫 번째 가치만을 보여 주며 나는 잘려진 것을 섞으려고했지만 예상했던대로 효과가 없었습니다.

$trimmed = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

$value = 2; 

foreach ($trimmed as $line) { 

    if ($line == "Text $value") { 
     echo $line."<br>"; 
     echo current($trimmed); 
    } 
} 

감사

+0

? 왜 XML이 아닌가? – hjpotter92

+0

file.txt는 게임에 대한 몇 가지 퀘스트를 저장합니다. 레벨 1과 퀘스트 설명. – Comy

+0

JSon과 같은 다른 형식을 사용할 수 있습니다. –

답변

0

, 그것은 부피가 큰 수 있습니다 이것을 시도해보십시오`file.txt`를 생성하는 것

<?php 

    function get_random_line($number, $file='file.txt'){ 

    $trimmed = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
    $string = "Text $number"; 

    $array = array(); 
    foreach ($trimmed as $key => $line) { 

     if($key % 2 == 0){ 
     $arr_key = $line; 
     if(!array_key_exists($arr_key,$array)){ 
      $array[$arr_key]['total'] = 0; 
     } 
     }else{ 
     $array[$arr_key]['total']++; 
     $array[$arr_key]['rows'][] = $line; 
     }   

    } 
    if(key_exists($string,$array)){ 
     $key = array_rand($array[$string]['rows'],1); 
     return $array[$string]['rows'][$key]; 
    }else 
    { 
     return 'Provide a Valid Key'; 
    } 

    } 


    echo '<pre>'; 
    print_r(get_random_line(3,'file.txt')); // Get Random Lines based on Label Value 
    echo '</pre>'; 

?> 
관련 문제