2015-10-27 169 views
-1

如何在字符串之前和之後找到雙引號"的第一個匹配項。當然,我使用preg_match_all()來查找所有.jpg擴展名,我希望在擴展之前和之後找到第一個出現的"。我去了strpos()substr(),但我無法做到。什麼是最快的方式呢?!php - 在字符串之前和之後找到特定字符

例如:

<div data-img="/path/to/the/file.jpg"></div> 

也許

<img src="/path/to/the/file.jpg"/> 

我只是想獲得的"第一次出現在每次.jpg後,我從preg_match_all()得到,然後得到雙倍的路徑報價!

+2

您能舉一個想要的輸入/輸出的例子嗎? –

+0

@NijrajGelani我的意思並不那麼難。這個例子當然重複了上面的說法! – Afshin

+1

爲什麼不讓正則表達式匹配雙引號之間的整個字符串? – Barmar

回答

1

這是你在找什麼,第一個「'之前名爲.jpg',後一個

$path = array(); 
$subst = strpos($s, '.jpg'); 
while ($subst !== false) { 
    $before = strrpos($s, '"', -$subst) + 1; 
    $after = strpos($s, '"', $subst); 
    $path[] = substr($s, $before, $after - $before); 
    $subst = strpos($s, '.jpg', $after + 1); 
} 

編輯:修復了代碼,現在,它實際上找到的位置'''替代'.jpg'前後的''',如果這是你正在尋找的。

編輯2:添加了如何獲取引號之間的文件名。

編輯3:看到你的回答後,我終於明白了這個問題!這是如何完成字符串比較!

1

非常感謝Barmar。這將有助於那些可能有同樣問題的人:

preg_match_all('/"[^"]*\.jpg"/', $string, $matches); 

print_r($matches); 
相關問題