2017-04-23 118 views
0

我運行一個網站,接受貝寶付款。當用戶對他們的購買有疑問時,他們會通過自己編碼的票務系統向我發送他們的交易ID。Regexp貝寶交易ID文本

我想將交易ID變成URL(鏈接將提取交易信息),以使我的一切都變得更快。

我知道事務ID是17個字符長。我將如何去做這件事?

UPDATE:

當用戶後,讓我們說。 「你好,我的名字是John Doe,我進行了購買,並且遇到了問題,交易ID:XXXXXX」。我需要能夠把XXXX變成一個鏈接來提交交易信息。我無法弄清楚如何使用preg_replace在PHP中創建它,因此它只將事務ID格式化爲鏈接。

我有查找事務信息所需的鏈接,但我只是不知道如何使用正則表達式來查找事務ID,然後包裝一個鏈接。

+0

你嘗試過什麼?交易的時間長短無關。 – Gntem

+0

你並不是想把釣魚系統放在一起,對吧?不知何故,我發現有人能夠編碼票系統,但無法組合一個鏈接,這有點令人懷疑。但是,這只是我。 – RST

+0

@RST當用戶發帖讓我們說。 「你好,我的名字是John Doe,我進行了購買,並且遇到了問題,交易ID:XXXXXX」。我需要能夠把XXXX變成一個鏈接來提交交易信息。我無法弄清楚如何使用preg_replace在PHP中創建它,因此它只將事務ID格式化爲鏈接。 – Path

回答

0

你可能會去:

\b[\dA-Z]{17}\b 

它看起來長度爲17的,兩側邊框的字符串。如果你知道,它只有數字,這也可能是~\b\d{17}\b~,但你沒有詳細說明規格,真的。


PHP這將是:

<?php 

$string = <<<DATA 
When users post let us say. "Hi there, my name is John Doe. I made a purchase and I'm having issues with it. Transaction ID: XXXXXXXXXXXXXXXXX". I need to be able to turn the XXXX into a link that pulls up transaction info. I can't figure out how to create this in PHP with preg_replace, so it only formats the transaction ID into the link. 

I have the link that is needed to lookup the transaction info, but I just do not know how to use regex to find the transaction ID and then wrap a link around it. 
DATA; 

$regex = '~\b[\dA-Z]{17}\b~'; 

$string_with_links = preg_replace($regex, "http://www.exaple.com/id/$0", $string); 
echo $string_with_links; 
?> 
+1

如果之前有17個字母的單詞存在,事務ID,例如:https://regex101.com/r/kFB3zh/1 –

+0

@ stej4n:是的。但是沒有進一步的說明,單單寫一個正則表達式就很難了(正如我在上面的文字中提到的那樣)。 – Jan

+0

@Jan PayPal交易ID是由大寫字母和數字組合而成的17個字符。也許你可以更新它,所以它只檢查是否所有的字母都是大寫的?這將防止這種情況發生。 – Path

0

如果你知道事務ID,那麼你必須簡單地使用此鏈接:

https://www.paypal.com/__LANGUAGE__/cgi-bin/webscr?cmd=_view-a-trans&id=__TRANSACTION_ID__

其中

__LANGUAGE__是語言(2個字母,小寫字母,例如恩, fr,it ...)

__TRANSACTION_ID__是17個字符的交易編號

樣本鏈接

https://www.paypal.com/fr/cgi-bin/webscr?cmd=_view-a-trans&id=7FB54205R7031312B

編輯

比方說,你想從這個文本中提取事務ID:

您好,我的名字是李四。我進行了購買,並且遇到了問題。交易ID:7FB54205R7031312B。

然後你可以使用這個正則表達式:(?<=\s)([A-Z\d]{17})

Demo

樣品的PHP代碼

$string = "Hi there, my name is John Doe. I made a purchase and I'm having issues with it. Transaction ID: 7FB54205R7031312B."; 
$pattern = '/(?<=\s)([A-Z\d]{17})/'; 

preg_match($pattern, $string, $matches); 
$transaction_ID = $matches[0]; 
$language = 'en'; 

$url = 'https://www.paypal.com/'.$language.'/cgi-bin/webscr?cmd=_view-a-trans&id='.$transaction_ID; 
echo $url; 

Online demo

代碼也可以使用像這樣的文本嗨,我是John Doe。交易:7FB54205R7031312B你能幫我嗎?

+0

當用戶發佈讓我們說。 「你好,我的名字是John Doe,我進行了購買,並且遇到了問題,交易ID:XXXXXX」。我需要能夠把XXXX變成一個鏈接來提交交易信息。我無法弄清楚如何使用preg_replace在PHP中創建它,因此它只將事務ID格式化爲鏈接。 – Path

+0

我有查找事務信息所需的鏈接,但我不知道如何使用正則表達式來查找事務ID,然後包裝一個鏈接。 – Path

+0

如果他們不輸入「ID:」如果他們只輸入17個字符會怎麼樣? – Path