更改文本中的图像链接 [PHP]
Changing image links in text [PHP]
我想用以下内容替换文本中的图片链接,但没有。我确定一切都是正确的,但我不知道问题出在哪里。你能帮我解决这个问题吗?
{#img='image_name.jpg', alt=''}
PHP代码:
$text = "Hello <img src='https://example.com/image1.jpg'> , <img src='example.com/image2.jpg'> and now you :)";
$re = '/<img.*?src=[\'"]([^"\'])[\'"]>/';
preg_match_all($re, $text, $matches, PREG_SET_ORDER, 0);
foreach ($matches as $val) {
$str = preg_replace('/<img.*?src=[\'"](' . $val[1] . ')[\'"]>/', "{#img='" . $val[1] . "', alt=''}", $text);
}
var_dump($text);
结果:
Hello <img src='https://example.com/image1.jpg'> , <img src='https://example.com/image2.jpg'> and now you :)
没有匹配的原因是因为在模式 <img.*?src=[\'"]([^"\'])[\'"]>
中你必须重复字符 class ([^"\']*)
因为现在你正好匹配 1 次。
然后在 foreach 循环中,被替换的字符串在变量 $str
中,因为
$text
根本没动,只传给preg_match_all.
但不需要先匹配,再单独循环调用preg_replace
您可以仅使用 preg_replace 作为示例,并使用包含 url 的捕获组 2 值进行替换。
$text = "Hello <img src='https://example.com/image1.jpg'> , <img src='example.com/image2.jpg'> and now you :)";
$str = preg_replace('/<img[^>]*src=([\'"])(.*?)>/', "{#img='', alt=''}", $text);
echo $str;
输出
Hello {#img='https://example.com/image1.jpg', alt=''} , {#img='example.com/image2.jpg', alt=''} and now you :)
在 3v4l.org 上查看 regex demo for the matches on regex101 and a PHP demo。
我想用以下内容替换文本中的图片链接,但没有。我确定一切都是正确的,但我不知道问题出在哪里。你能帮我解决这个问题吗?
{#img='image_name.jpg', alt=''}
PHP代码:
$text = "Hello <img src='https://example.com/image1.jpg'> , <img src='example.com/image2.jpg'> and now you :)";
$re = '/<img.*?src=[\'"]([^"\'])[\'"]>/';
preg_match_all($re, $text, $matches, PREG_SET_ORDER, 0);
foreach ($matches as $val) {
$str = preg_replace('/<img.*?src=[\'"](' . $val[1] . ')[\'"]>/', "{#img='" . $val[1] . "', alt=''}", $text);
}
var_dump($text);
结果:
Hello <img src='https://example.com/image1.jpg'> , <img src='https://example.com/image2.jpg'> and now you :)
没有匹配的原因是因为在模式 <img.*?src=[\'"]([^"\'])[\'"]>
中你必须重复字符 class ([^"\']*)
因为现在你正好匹配 1 次。
然后在 foreach 循环中,被替换的字符串在变量 $str
中,因为
$text
根本没动,只传给preg_match_all.
但不需要先匹配,再单独循环调用preg_replace
您可以仅使用 preg_replace 作为示例,并使用包含 url 的捕获组 2 值进行替换。
$text = "Hello <img src='https://example.com/image1.jpg'> , <img src='example.com/image2.jpg'> and now you :)";
$str = preg_replace('/<img[^>]*src=([\'"])(.*?)>/', "{#img='', alt=''}", $text);
echo $str;
输出
Hello {#img='https://example.com/image1.jpg', alt=''} , {#img='example.com/image2.jpg', alt=''} and now you :)
在 3v4l.org 上查看 regex demo for the matches on regex101 and a PHP demo。