これには正規表現が必要ですか?必要はありません。正規表現は最も読みやすいソリューションですか?おそらくそうではありません-少なくとも正規表現に堪能でない限り。大量のデータをスキャンする場合、正規表現はより効率的ですか?絶対に、正規表現は最初の出現時にコンパイルおよびキャッシュされます。正規表現は「コードの最小行」トロフィーを獲得しますか?
$string = <<<EOS
<html>
<body>
blahblah<br>
<img src='http://www.mysite.com/folder/subfolder/images/myimage.png'>blah<br>
blah<img src='http://www.mysite.com/folder/subfolder/images/another.png' />blah<br>
</body>
</html>
EOS;
preg_match_all("%<img .*?src=['\"](.*?)['\"]%s", $string, $matches);
$images = array_map(function ($element) { return preg_replace("%^.*/(.*)$%", 'images/$1', $element); }, $matches[1]);
print_r($images);
2行のコード。これはPHPではアンダーカットするのが難しいです。その結果、次の$images
配列になります。
Array
(
[0] => images/myimage.png
[1] => images/another.png
)
匿名関数を適切なものに置き換えない限り、これは5.3より前のバージョンのPHPでは機能しないことに注意してください。