2017-05-29 36 views
1

有點粘性的業務後所以,我能夠從字符串更接近我的目標的一個草垛獲得一大塊子串的搜索的"getflashmedia"獲得不同長度的字符串在PHP

var_dump($str) = 
    string(1735) "getflashmedia" src="http://www.exampleURL.com/media-name.mp4"></object> 
    .../*a haystack of code as string*/" 
第一次出現後,

我想進去src的URL,但這是在長度不同,所以我真的不能使用substr()功能

回答

3

使用正則表達式,我提出以下建議:src="(.*?)"

從字面上看,該表達式匹配src=",然後開始捕獲,並在找到另一個"時停止。

<?php 

$input = 'getflashmedia" src="http://www.exampleURL.com/media-name.mp4"></object>'; 

preg_match_all('/src="(.*?)"/', $input, $matches); 

print_r($matches[1]); 

輸出:

Array 
(
    [0] => http://www.exampleURL.com/media-name.mp4 
) 

這將讓每一個環節,從輸入字符串中的每個src屬性。如果您只需要第一個,請使用preg_match()

2

我強烈建議,而不是使用字符串函數或正則表達式來解析XML/HTML,您應該使用XML解析器。您可以通過這種方式構建更可靠的刮板。

XML解析器可以處理您在編寫字符串處理代碼時可能不會想到的情況。

參見XML分析器:http://php.net/manual/en/book.xml.php

另一種選擇是SimpleXML的:http://php.net/manual/en/simplexml.examples-basic.php

有適合它的一些庫。

+1

或者有文檔對象模型http://php.net/manual/en/book.dom.php。無論哪種方式,老笑話是,如果你有問題,你用正則表達式來解決它,你現在有兩個問題。 –

+0

確實。我瞭解到,構建了一些非常複雜的屏幕刮板。用這種方法做得好得多。 –