2015-04-16 4 views
1

Я извлекаю данные из файла, который я очистил с помощью preg_replace. Проблема заключается в том, что он только возвращает $output один раз, хотя есть несколько $content через документ.Невозможно выполнить цикл вывода несколько раз

Мне нужно использовать петлю, но я не знаю, как заставить ее работать. Я попытался использовать этот код из этого link, но не могу заставить его работать правильно с точки зрения echo $output.

Вот мой код:

<?php 

$getme = file_get_contents("somefile.txt"); 

$string = preg_replace('/[^A-Za-z\-]/', '', $getme); 

function get_between($content,$start,$end){ 
$r = explode($start, $content); 
if (isset($r[1])){ 
    $r = explode($end, $r[1]); 
    return $r[0]; 
} 
return ''; 
} 

$content = $string; 
$start = "somestuff"; 
$end = "morestuff"; 
$output = get_between($content,$start,$end); 


echo $output; 
?> 

Любая помощь будет оценена.

+0

Что вы на самом деле пытаетесь сделать именно? –

+0

, пожалуйста, добавьте некоторую строку этого файла somefile.txt, но я думаю, вы должны добавить цикл foreach после первого взрыва. – Root125

ответ

0

ли это с этим кодом:

<?php 

$getme = file_get_contents("somefile.txt"); 

$string = preg_replace('/[^A-Za-z\-]/', '', $getme); 

function get_between($valuestr,$start,$end){ 

if (isset($valuestr)){ 
    $r = explode($end, $valuestr); 
    return $r; 
} 

return ''; 
} 

$content = $string; 
$start = "somestuff"; 
$end = "morestuff"; 

//Explode all of input contents : 
$r = explode($start, $content); 

// Loop check function 
foreach ($r as $valuestr) { 
    $output .= get_between($valuestr,$start,$end); 
} 

echo $output; 
?> 
+0

Это не сработало. Просто разместите Array по всей странице –

+0

, если вы добавите пример содержимого этого 'somefile.txt', это может помочь вам определить, что вы хотите. – Root125

0

Попробуйте это. Вы не использовали цикл. Я думаю, что невозможно получить множественное значение без цикла.

$getme = file_get_contents("somefile.txt"); 
$string = preg_replace('/[^A-Za-z\-]/', '', $getme); 
function get_between($content,$start,$end){ 
    $retval=''; 
    $r = explode($start, $content); 
    foreach($r as $s){ 
     if (isset($s)){ 
      $t = explode($end, $s); 
      $retval .=$t[0].'<br>'; 
     } 
    } 
    return $retval; 
} 
$content = $string; 
$start = "somestuff"; 
$end = "morestuff"; 
$output = get_between($content,$start,$end); 
echo $output; 
+0

Raju, это работает, но проблема в том, что он добавил тонну текста в документ из документа, из которого я тянул. Вот небольшой пример 'errorfunctiontrierrtnewDategetTimeeeQJfaxhandleDDuLPloaderGzBlfunctiontfunctioneifwindowperformancewindowperformancetimingwindowperformancegetEntriesByTypevarnteerthandleottloaderfeaturesstntnonfn-startfunctiontvareteinstanceofEventthisbstStartDatenownonfn-startfunctionthistimeDatenowthisstartPathlocationpathnamelocationhas' –

0

Я был в состоянии решить это самостоятельно:

<?php 

$getme = file_get_contents("somefile.txt"); 

$string = preg_replace('/[^A-Za-z\-]/', '', $getme); 

preg_match_all("/somestuff(.*?)morestuff/", $string, $matches, PREG_SET_ORDER); 

foreach ($matches as $val) { 
echo str_replace(array('somestuff', 'morestuff'), array('', ','), $val[0]); 
} 

?>