ファイルから変換された文字列に問題があり、直接入力された場合と同じように動作します。
これが私のtest.htmlファイルです:
<html>
<font class="editable">
This is editable section 1
</font>
<br><br><hr><br>
<font class="editable">
This is editable section 2
</font>
</html>
これが私のphpファイルです:
<?php
//RETURN ARRAY OF RESULTS FOUND BETWEEN START & END IN STRING
function returnStartEnd($string,$start,$end){
preg_match_all('/' . preg_quote($start, '/') . '(.*?)'. preg_quote($end, '/').'/i', $string, $m);
$out = array();
foreach($m[1] as $key => $value){
$type = explode('::',$value);
if(sizeof($type)>1){
if(!is_array($out[$type[0]]))
$out[$type[0]] = array();
$out[$type[0]][] = $type[1];
} else {
$out[] = $value;
}
}
return $out;
};
// RETURN FILE CONTENTS AS A STRING
function readFileToVar($file){
$fh = fopen($file,'r') or die($php_errormsg);
$html = fread($fh,filesize($file));
return $html;
fclose($fh) or die($php_errormsg);
};
$file = 'test.html';
$html = readFileToVar($file);
// OR
//$html = '<html> <font class="editable"> This is editable section 1 </font><br><br><hr><br><font class="editable"> This is editable section 2 </font> </html>';
$go = 'editable">';
$stop = '<';
$arrayOfEditables = returnStartEnd($html,$go,$stop);
echo "<br>Result:<br>";
var_dump($arrayOfEditables);
?>
コメントアウトされた$htmlに注意してください。これは、test.htmlファイルから返されるもの(?)と同じです。関数returnStartEnd()を実行しようとすると、コメントアウトされた文字列では期待どおりに機能しますが、ファイルから作成された文字列では機能せず、空の配列が返されます。
私は何が欠けていますか?ありがとう。