2016-04-28 6 views
-2

У меня есть такой струны, которые я получаю от API Get-запроса:PHP: Извлечение строки из строки

HTTP/1.1 404 Not Foundset-cookie: test-usercontext=asdf-client=200; path= 
/set-cookie: test=AjQxMDMBABhNAEEATgBHAE8AIAAgACAAIAAgACAAIAACAAYyADAAMAADABBGAEIAVAAgACAAIAAgACAABAAYMgAwADEANgAwADQAMgA4ADEAMAAzADQABQAEAAAACAYAAlgACQACRQD 
%2fA%2fowggP2BgkqhkiG9w0BBwKgggPnMIID4wIBATELMAkGBSsOAwIaBQAwCwYJKoZIhvcNAQcBoIICwjCCAr4wggJ%21AgcgE 
wUWFQk1MAkGByqGSM44BAMwRTELMAkGA1UEBhMCREUxDzANBgNVBAoTBlNBUC1BRzEMMAoGA1UECxMDRkJUMRcwFQYDVQQDDA4qL 
ndkZi5zYXAuY29ycDAeFw0xMzA1MTYxNTA5MzVaFw0zODAxMDEwMDAwMDFaMEUxCzAJBgNVBAYTAkRFMQ8wDQYDVQQKEwZTQVAtQUcxDDAKBgNVBAsTA0ZCVDEXMBUGA1UEAwwOKi53ZGYuc2FwLmNvcnAwggG4MIIBLAYHKoZIzjgEATCCAR8CgYEA 
%2f%21RvacHcYrHXGs0tkbb0V5pRZr%2166wpEefngcrA%2feo5VUyPFnjV%21VLPgYTlK5oVBT%21b8hVdVDF72%2fF7tG%2fzyNXjr6xCkACw69 
%21NEBKQ4A7RSfLieN8IgCWl3ENA6cbgQJlhYMAugQexgN5rNX67eLyIFTEHGbF%2fkvlWXyDZt2AsCFQCCZiO7z37X8dHkeMyzasFRThlyFwKBgQC6 
%2f4ZVeZJsMH528dpoLej8jEeUYstPpe6CFgIF7LqFjFnEWM%2fgt364k9%21kYRMdnN1l3Dgv2fHBOMET2lwiCSP%21Lp3JkDH9K 
%21H9zLJfg%2fd3o5gNCu4pct9Au4%2fLh%21ejlgOAytMcr7z9G1SSaRKFk9QnzfyA4mmLmtDT6qZG%2fgx5%21wOBhQACgYEA%21rGBozVMIrQFy8mXlkOSDWiAo16gBBlLqAIhsc3Th 
%2f6LFM%21HK8mzuxApdB8vDg5zOPQW959g2YmZBvMm7fBjjRyeQnh0SamBQNwdWR3cyhdXANRJTjdjV6yGJaBVUzMam5Yh2%2fNjwHWxS 
%21Ev%21KNSUi7%2fHLrYjQ%2f5mYiipmBwOskwCQYHKoZIzjgEAwMvADAsAhQkPKrX2UIzsWHZoErU9zMKRjRMSwIUchu3vWrhXc2bckO 
%21ASRCiCh3oF4xgf0wgfoCAQEwUDBFMQswCQYDVQQGEwJERTEPMA0GA1UEChMGU0FQLUFHMQwwCgYDVQQLEwNGQlQxFzAVBgNVB 
AMMDioud2RmLnNhcC5jb3JwAgcgEwUWFQk1MAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3D 
QEJBTEPFw0xNjA0MjgxMDM0NTdaMCMGCSqGSIb3DQEJBDEWBBTLTQarxV7dyga8cQOmMUBQNBc4mTAJBgcqhkjOOAQDBC4wLAIUUOp 
%21DiZu22HaQ324gaZTLbbjWqICFCtwUwws0te2HqBON0OF%2faQ%21hLD3; path=/; domain=test.de; secure; HttpOnlyset-cookie 
: asdf_SESSIONID=VMoFGADsOTEThFHqCdDaC9mG0O4NLBHmhakAUFaDZVE%3d; path=/; secure; HttpOnlycontent-type 
: application/jsoncontent-length: 504x-csrf-token: dZgtpkwUMaN-gQ1X4QEXUw==dataserviceversion: 1.0x-asdf-e2eperf 
: { asName: "ldai1_00", asType: "asdf", elapsed: 319, maxMem: 4595, dbTime: 166 }{"error":{"code" 
:"005056A509B11EE1B9A8FEC11C21D78E","message":{"lang":"en","value":"Resource not found for the segment 
'http:'."},"innererror":{"transactionid":"5721AEEC42F83183E10000000A4DA014","timestamp":"20160428103457 
.6579540","Error_Resolution":{"error","Note":"Note 1797736 
for error analysis"}}}}<br> 

Я хочу, чтобы извлечь X-CSRF-токен, который указан после: x-csrf-токен:.

В этом случае было бы

dZgtpkwUMaN-gQ1X4QEXUw ==

Как сделать это лучший способ?

Использовать preg_match_all? Но что тогда, я немного потерял. Благодарим за любые советы.

+1

Почему regex просто выполняет поиск строки – anubhava

ответ

2

Это регулярное выражение будет работать

x-csrf-token:(.*?)(?=\w+:) 

Regex Demo

PHP код

$re = "/x-csrf-token:(.*?)(?=\\w+:)/m"; 
preg_match_all($re, $str, $matches); 
print_r($matches[1]); 

Ideone Demo

Лучшим решением будет остановить, когда есть место, кроме \w+: (предполагающие пространства не может быть частью x-csrf-token)

x-csrf-token:\s*(.*?)(?=\w+:|\s) 
0

Вы можете использовать csrf-token: (.*?==) с preg_match_all, то есть:

preg_match_all('/csrf-token: (.*?==)/im', $string, $token, PREG_PATTERN_ORDER); 
$token = $token[1][0]; 
echo $token; 
//dZgtpkwUMaN-gQ1X4QEXUw== 

Ideone Demo

Смежные вопросы