我将您的代码复制到Ubuntu盒上我的主目录中的一个文件中,已删除the weird character that @s_ha_dum noticed, 然后运行它。正如我所预料的那样。
代码:
<?php
function get_the_post_imgs($oldPostContent) {
$newPostContent = $oldPostContent;
$newPostContent = preg_replace_callback(
"/<img.*src=[\\"\']([^\\"\']*)[\\"\'].*>/i", // pattern to match to (i.e the contents of an <img src="..." /> tag)
function ($match) {
return "hello world"; // obviously it\'s a lot more complicated than this but for your sake i\'ve massively simplified it so the src="..." content is just replaced with "hello world" for now
},
$oldPostContent
);
return $newPostContent; // return new manipulated content
}
echo get_the_post_imgs( \'<a href="foo.php"><img align="right" src="http://example.com/fire.gif" /></a><br />\' );
?>
从命令行运行此代码:
% php -e foo.php
<a href="foo.php">hello world
您的正则表达式对于您的目的可能有点贪婪,但它确实有效。
PS,试着用奇怪的字符运行代码:
% php -e foo.php
PHP Parse error: syntax error, unexpected \'"/<img.*src=[\\"\']([^\\"\']*)[\\"\'\' (T_CONSTANT_ENCAPSED_STRING) in /home/username/foo.php on line 6
Edit -- 既然你在评论中问到了,我想我应该试着为你编一个不那么贪婪的正则表达式。试试这个尺码:
<img.*src=[\\"\']([^\\"\']*)[\\"\'][^>]*>
额外的
[^>*]
末尾的术语结束
<img...>
结束时标记
>
, 而不是结转到最后
>
在这行中(在我的示例中,结束语
>
在
</a>
标签)。