簡體   English   中英

preg_split數組

[英]preg_split array

運行時:

preg_split("/MapAttempt /", $subject)

在給定的輸入字符串上:

MapAttempt TASK_TYPE="CLEANUP" TASKID="task_201307250256_0001_m_000320" TASK_ATTEMPT_ID="attempt_201307250256_0001_m_000320_0" START_TIME="1374702854132" TRACKER_NAME="tracker_wsmex3:ip6-localhost/127\.0\.0\.1:43273" HTTP_PORT="50060" .
MapAttempt TASK_TYPE="CLEANUP" TASKID="task_201307250256_0001_m_000320" TASK_ATTEMPT_ID="attempt_201307250256_0001_m_000320_0" TASK_STATUS="SUCCESS" FINISH_TIME="1374702864491" HOSTNAME="/default-rack/wsmex3" STATE_STRING="cleanup" COUNTERS="{(FileSystemCounters)(FileSystemCounters)[(FILE_BYTES_WRITTEN)(FILE_BYTES_WRITTEN)(21559)]}{(org\.apache\.hadoop\.mapred\.Task$Counter)(Map-Reduce Framework)[(PHYSICAL_MEMORY_BYTES)(Physical memory \\(bytes\\) snapshot)(95113216)][(SPILLED_RECORDS)(Spilled Records)(0)][(CPU_MILLISECONDS)(CPU time spent \\(ms\\))(690)][(COMMITTED_HEAP_BYTES)(Total committed heap usage \\(bytes\\))(200998912)][(VIRTUAL_MEMORY_BYTES)(Virtual memory \\(bytes\\) snapshot)(1214373888)]}

我正在接收所需的數組,但又收到一個附加的空索引,為什么?

以及為什么要運行:

preg_split("/MapAttempt .* \./", $subject)

返回空數組?

您有2個問題。

您獲得其他空索引的原因是,第一個MapAttempt前面有一個空字符串。

preg_split('/A/', 'xAyAz');

會導致

array('x', 'y', 'z')

preg_split('/A/', 'AyAz');

導致

array ('', 'y', 'z')

就像在上面的示例中一樣,它為您提供了數組第一個元素中第一個定界符之前的所有內容-但是那里什么也沒有,因此它為您提供了一個空字符串。

對於第二個問題,您要求將$ subject除以以下值:

字符串“ MapAttempt”,后跟一個空格,后跟0或更多的值,后跟一個空格,后跟一個句點。

第二個問題是第一個問題的稍微復雜的例子。 您的正則表達式旨在匹配主題中的整個第一行。 因此,您根據$ subject中第1個出現的內容進行拆分 因此,您得到的是划界符之前的內容(因為划界符在開始時就匹配,所以為空字符串),然后第一行都不打印,因為它全部包含在划界符中(就像preg_split('/ A /',... )不會在返回的數組中為您提供“ A”),而是為您提供了輪廓符號之后的所有內容(第二行)。

(如果這可以解決您的問題,請標記為答案。我正試圖獲得足夠的聲譽點,以便我可以對某些事情進行投票!謝謝...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM