1

2 つのマーカーの間に文字列を挿入する必要があります。

最初に、次を使用して #DATA# と #END# の間に (サーバーに保存されているファイルから) 刺されます。

function getStringBetweenStrings($string,$start,$end){ 
    $startsAt=strpos($string,$start)+strlen($start);
 $endsAt=strpos($string,$end, $startsAt);
 return substr($string,$startsAt,$endsAt-$startsAt);
} 

いくつかの処理を行い、文字列の詳細に基づいて、いくつかのレコードをクエリします。レコードがある場合は、それらを文字列の末尾に追加し、サーバー上のファイル内の #DATA# と #END# の間に文字列を再挿入できるようにする必要があります。

どうすればこれを達成できますか?

#END# の前に一度に 1 つのレコードをファイルに挿入することはできますか?それとも、サーバー上の文字列を操作して、サーバー上のファイルの既存の文字列を上書きするだけでよいでしょうか?

データの例:

AGENT_REF^ADDRESS_1^ADDRESS_2^ADDRESS_3^ADDRESS_4^TOWN^POSTCODE1^POSTCODE2^SUMMARY^DESCRIPTION^BRANCH_ID^STATUS_ID^BEDROOMS^PRICE^PROP_SUB_ID^CREATE_DATE^UPDATE_DATE^DISPLAY_ADDRESS^PUBLISHED_FLAG^LET_RENT_FREQUENCY^TRANS_TYPE_ID^NEW_HOME_FLAG^MEDIA_IMAGE_00^MEDIA_IMAGE_TEXT_00^MEDIA_IMAGE_01^MEDIA_IMAGE_TEXT_01^~

#DATA#

//Property records would appear here and match the string above, each field separated with ^ and terminating with ~

//Once the end of data has been reached, it will be fully terminated with:

#END#

新しいプロパティを確認するときは、次のことを行います。

  1. #DATA# と #END# の間のすべての既存のプロパティを取得します
  2. プロパティの ID を取得し、これらの ID に一致しない新しいプロパティをクエリします

次に、#END# の前で、ファイルの最後のプロパティの後に、新しいプロパティを再挿入する必要があります。

ファイルの構造は、Rightmove BLM ファイルです。

4

2 に答える 2

0

新しいデータで古いデータの str_replace() を実行するだけです:

$str = str_replace('#DATA#'.$oldstr.'#END#', '#DATA#'.$newstr.'#END#', $str);
于 2010-04-08T11:15:30.617 に答える
0

3 つのステップでデータを抽出します。

1) ファイルからデータを抽出します。

<?php
preg_match("/#DATA#(.+)#END#/s", $string, $data); 
?>

2) データの各行を抽出します。

<?php
preg_match_all("/((?:.+\^){2,})~/", $data[1], $rows, PREG_PATTERN_ORDER);
// The rows with data will be stored in $rows[1]
?>

3) 各行のデータを操作するか、新しい行を追加します。

<?php
//Add
// Add new row to the end of the array
$data[1][] = implode('^', $newRowArray);
//Use
// Creates an array with all the data from the row '0'
$rowData = preg_split("/\^/", $data[1][0], -1, PREG_SPLIT_NO_EMPTY);

//Save the changes
//$newData should be all the rows together (with the '~' at the end of each row)
//$string is the original string with all the information
$file = preg_replace("/(#DATA#\r?\n).+(\r?\n#END#)/s", "\1".$newData."\2", $string);

これがあなたの問題に役立つことを願っています。

于 2011-03-18T14:56:05.673 に答える