2017-07-17 91 views
0

我有特定的文本存儲在文本文件中。如何使用Php僅提取Text-ID的「[email protected]」?從字符串中提取特定文本使用php

下面是示例文本:

[X-PHP-始髮腳本:0:acr.php

X:< [email protected]>

MIME-版本: 1.0

Content-Type:text/plain;字符集= US-ASCII;

格式=流入

文本ID:< [email protected]>

日期:星期日,2017年7月2日12時22分12秒0500]

任何幫助讚賞。提前致謝。

+0

嘗試使用正則表達式與[preg_match()](http://php.net/manual/en/function.preg-match.php)。學習正則表達式時,https://regex101.com是一個很好的資源。 –

+0

有時文本ID可能有所不同。 – Snappy

+0

它是不同的文本「文本ID」或之後的文本? –

回答

1
  $text = '[X-PHP-Originating-Script: 0:acr.php 

x: <[email protected]> 

MIME-Version: 1.0 

Content-Type: text/plain; charset=US-ASCII; 

Format=flowed 

Text-ID: <[email protected]> 

Date: Sun, 02 Jul 2017 12:22:12 +0500]'; 

     preg_match('/Text\-ID:\s<(.*?)>/s', $text, $ret); 
     var_dump($ret[1]); 
     exit; 
1
與您識別器一樣開始

載重線 「文本ID:」 使用strpos,然後使用負載他人信息的PHP從該行

爆炸

preg_match

爲當前行,來搜索你想要什麼樣的下面

0

//正確的文本文件格式:

[X-PHP-Originating-Script: 0:acr.php 
x: <[email protected]> 
MIME-Version: 1.0 
Content-Type: text/plain; charset=US-ASCII; 
Format=flowed 
Text-ID: <[email protected]> 
Date: Sun, 02 Jul 2017 12:22:12 +0500] 

//使用下面的代碼,並使用str_replace()函數來得到你想要的結果

$myFile = "abc.txt"; 
$lines = file($myFile);//file in to an array 
$abc = str_replace("Text-ID:","",$lines[5]); 
$abc = str_replace("<","",$abc); 
$abc = str_replace(">","",$abc); 
print_r($abc); 

//第二個選項

$myFile = "abc.txt"; 
$lines = file($myFile);//file in to an array 
preg_match('/Text\-ID:\s<(.*?)>/s', $lines[5], $match); 
print_R($match[1]); 
+0

你的回答沒有意義。爲什麼要更改文件?爲什麼使用'file()'加載內容(這會給你一個所有行作爲元素的數組),你會如何在'preg_match()'上應用?將整個文件作爲文本字符串加載並直接執行'preg_match()'是否更簡單? –

+0

我告訴他要調整文件。我會應用preg_match()數組,我將從$行中獲得。 –

+0

就像我說的,這不是必要的。你可以直接對整個字符串執行preg_match()(沒有數組),也不需要先「對齊」。沒有額外的積分讓代碼複雜化,不必要的步驟。 –

0

首先創建一個帶有虛擬文件名稱的記事本文件。之後,將所有文本放在該文件中。請使用我的腳本從給定的字符串中查找特定的字符串。

一次性

$lines= file('dummy.txt'); // write file name here 
$find_word= ''; 
if(count($lines)>0){ 
    //$lk=array_search('Text-ID',$line); 
    foreach ($lines as $lineNumber => $line) { 
     if (strpos($line, 'Text-ID') !== false) { 
       $start = '<'; 
       $end = '>'; 
       $r = explode($start, $line); 
       if (isset($r[1])){ 
        $r = explode($end, $r[1]); 
        $find_word=$r[0]; 
       } 
     } 
    }    
} 
print_r($find_word); exit; 

對於多時間
,如果你想找到陣列字符串多的時間和存儲,然後使用這個腳本。

$lines= file('dummy.txt'); // write file name here 
$find_words= ''; 
if(count($lines)>0){ 
    //$lk=array_search('Text-ID',$line); 
    foreach ($lines as $lineNumber => $line) { 
     if (strpos($line, 'Text-ID') !== false) { 
       $start = '<'; 
       $end = '>'; 
       $r = explode($start, $line); 
       if (isset($r[1])){ 
        $r = explode($end, $r[1]); 
        $find_words[]=$r[0]; 
       } 
     } 
    }    
} 
print_r($find_words); exit;