2011-01-12 56 views
0

內的兩個子這是我的大串(PHP) - 改變一個字符串

BEGIN:VEVENT
UID:XXXXXX
DTSTAMP:XXXXXX
狀態:Confirmed
類:public
網址:xxxxxx
SUMMARY:YYYYYYY
DESCRIPTION:xxxxxx; YYYYYYY;
DTSTART:XXXXXX
DTEND:XXXXXX
GEO:XXXXXX
LOCATION:XXXXXX
END:VEVENT

我需要在內容改變兩個 「YYYYYYY」 的位置/描述

我必須更換它們而不是特定的,因爲它在更大的功能中實現。 (這個字符串已經被切掉了3700行 - 日曆)

+1

你所說的**位置改**的意思,和你是什麼意思**取代它們沒有被具體** – RobertPitt 2011-01-12 13:45:03

+0

我記得我用http://www.kigkonsult.se/iCalcreator/解析/創建/編輯/ savingToDB iCal文件;) – Diablo 2011-01-12 13:57:39

回答

0

這取決於你所說的 「是具體的」 的意思。如果您需要替換特定鍵中的值(例如,您知道要替換鍵「SUMMARY」和「DESCRIPTION」的值),那麼只需使用正則表達式或將字符串轉換爲陣列和更換的值,這樣的事情:

//assuming $str is your string 
$lines = explode("\n", $str); 
foreach($lines as $k => $line) 
{ 
    $parts = explode(":", $line); 
    if ($parts[0] == 'SUMMARY') $lines[$k] = $parts[0].':'.'REPLACE_VALUE_FOR_SUMMARY'; 
    else if ($parts[0] == 'DESCRIPTION') $lines[$k] = $parts[0].':'.'REPLACE_VALUE_FOR_DESC'; 
} 
$str = implode("\n", $lines); 

正則表達式版本應該是這樣的:

$str = preg_replace('/(SUMMARY:)(.+)/', '$1:NEWVALUE', $str); 
$str = preg_replace('/(DESCRIPTION:)(.+)/', '$1:NEWVALUE', $str); 
0

找到的現在的位置是「SUMMARY:」和「DESCRIPTION:」 和替換與位置。

OR

找到這些位置之間的字符串和替換字符串