2009-09-29 66 views
0

Ahoy there!語法正則表達式來提取圖像的來源

我不能「猜測」女巫語法應該用來提取圖像的來源,但只是網址不是src=這兩個引號?

這裏是我的一段代碼:

function get_all_images_src() { 
    $content = get_the_content(); 
    preg_match_all('|src="(.*?)"|i', $content, $matches, PREG_SET_ORDER); 
    foreach($matches as $path) { 
     echo $path[0]; 
    } 
} 

當我使用它,我得到這個印刷:

src="http://project.bechade.fr/wp-content/uploads/2009/09/mer-300x225.jpg" 

我想只得到這樣的:

http://project.bechade.fr/wp-content/uploads/2009/09/mer-300x225.jpg 

任何理念?

感謝您的幫助。

+0

我不知道PHP,但我會建議嘗試PREG_PATTERN_ORDER,也許$路徑[1]。 – Beta 2009-09-29 17:59:01

回答

0

感謝Ithcy他正確的答案。 我想我已經太久作出反應,因爲他刪除了它,我只是不知道他的回答不見了......

因此,這裏是一個我已經收到郵件:

'| src =「(。*?)」| i'作爲 正則表達式沒有意義。嘗試 '| SRC = 「([^」] +)「|我',而不是 (這還不是最強大的 解決方案,但比你有什麼更好的 )

還等什麼。你的 想要$ path 1,而不是$ path [0]。你是 已經將所有src 屬性提取到$ matches []中, 與$ path [0]沒有任何關係。 ' 沒有得到文本中的所有src屬性 ,在代碼中的其他位置存在問題 。

一兩件事 - 你應該使用一個真正的 HTML解析器對於這一點,因爲的img標籤 不與SRC屬性 唯一的標籤。如果您使用的原始的HTML源代碼,這 ,這將 比賽不僅僅是但 標籤等

- ithcy

我所做的一切,他告訴我這樣做,包括使用HTML來自Bart的解析器(第二回答)。

它就像一個魅力!謝謝你隊友...

3

$path[1]代替$path[0]

+0

我使用'$ path [0]',因爲我想顯示所有的src圖像,我只是用'$ path [1]'獲得第一個' – 2009-09-29 19:17:11

5

不完全回答你的問題,但解析HTML時,可以考慮使用適當的HTML解析器:

foreach($html->find('img') as $element) { 
    echo $element->src . '<br />'; 
} 

參見:http://simplehtmldom.sourceforge.net/

+0

真的很有趣的隊友!感謝分享...使事情變得更容易 – 2009-09-29 19:22:40

0
echo $path[1]; 

$路徑[0]是完全匹配的字符串。 $ path [1]是第一個分組。

+0

正是我的想法... – 2009-09-29 19:18:04

0

你可以使用爆炸「作爲分隔符,然後在數組中你獲得的第二項將是正確的字符串:

$陣列=爆炸(「」」字符串,$ full_src);

$ bit_you_want = $ array [1];

返工你原來的功能,那就是:

function get_all_images_src() {  
$content = get_the_content();  
preg_match_all('|src="(.*?)"|i', $content, $matches, PREG_SET_ORDER);  
foreach($matches as $path) { 
$src = explode('"', $path);  
echo $src[1];  
} 
} 
+0

你可以繼續前進嗎,我很難與PHP ... – 2009-09-29 19:25:05