2016-06-22 26 views
0
$string = '/start [email protected]'; 
$pattern = '/{command} {name}@{domain}'; 

GET數組參數,可以像下面的例子:如何重寫一個字符串,並在PHP獲得通過模式PARAMS在PHP

['command' => 'start', 'name' => 'info', 'domain' => 'example.com'] 

$string = '/start [email protected]'; 
$pattern = '/{command} {email}'; 
['command' => 'start', 'email' => '[email protected]'] 

$string = '/start [email protected]'; 
$pattern = '{command} {email}'; 
['command' => '/start', 'email' => '[email protected]'] 
+0

''/^\ /(?P \ w +)\ s(?P [^ @] +)@(?P 。+?)$ /'',preg_match,例如https://regex101.com/r/jN8gP7/1 – ArtisticPhoenix

+0

歡迎到StackOverflow。雖然人們可能會猜測你的意思,但我建議在文本中添加明確的問題。 – YakovL

回答

1

如果它的單行字符串可以使用preg_match和像這樣的正則表達式

preg_match('/^\/(?P<command>\w+)\s(?P<name>[^@]+)\@(?P<domain>.+?)$/', '/start [email protected]', $match); 

但是,根據數據的變化,您可能需要調整一下regx。此輸出

  • 命令[1-6] start
  • 名稱[7-11] info
  • 域[12-23] example.com

,但它也將在數字索引陣列。

https://regex101.com/r/jN8gP7/1

只是爲了打破這一點,在英語。

領先^是線的起點,然後命名捕獲(\w(AZ任何AZ 0-9 _)),那麼空間\s然後命名的捕獲(什麼,但@t簽署[^@]),那麼@t標誌@,然後命名捕獲的(任何.+?到底$

這將捕獲此格式的任何東西,

(abc123_)空間(除了@)@(任何)

+0

如何將$ pattern轉換爲preg_match? $模式可能會改變! – mehdi

+0

這是一個很好的工具 – unixmiah

+0

沒關係,沒有正確地處理一些事情,比如preg_replace中的全局匹配,而/ forward斜槓需要更多的轉義,但總的來說它起作用。 – ArtisticPhoenix

相關問題