preg_replace 的正则表达式无法与括号匹配?
REGEX with preg_replace cannot match with parantheses?
preg_replace是否与图片名称中的括号冲突?
这是我的代码:
Pattern: /\/images\/upload\/image\/201808\/thumbnail(3).jpg/
Replacement: some_domain_url/images/upload/image/201808/thumbnail(3).jpg
Content: <img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />
结果:不替换。我尝试用 %28 替换括号,但 %29 也不起作用。
补充:模式和替换存储在动态数组中。它必须由 REGEX 替换。 objective是将所有本地图片路径替换为云存储。
REGEX专家可以指点一下吗?
您需要像这样转义括号:
\(3\).jpg
是的,括号是正则表达式中的特殊字符。他们需要逃脱。但是你让这比它需要的更困难。只需使用 str_replace
,因为您没有使用正则表达式的任何好处。
str_replace('/images/upload/image/201808/thumbnail(3).jpg', 'some_domain_url/images/upload/image/201808/thumbnail(3).jpg', '<img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />');
或 i
如果您想不区分大小写:
str_ireplace('/images/upload/image/201808/thumbnail(3).jpg', 'some_domain_url/images/upload/image/201808/thumbnail(3).jpg', '<img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />');
或者...正确的冗长方式:
$dom = new domdocument();
$dom->loadhtml('<img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$imgs = $dom->getelementsbytagname('img');
if(strpos($imgs[0]->getAttribute('src'), '/images/upload/image/201808/thumbnail(3).jpg') !== FALSE) {
$imgs[0]->setAttribute('src', 'some_domain_url' . $imgs[0]->getAttribute('src'));
echo $dom->saveHTML();
}
preg_replace是否与图片名称中的括号冲突?
这是我的代码:
Pattern: /\/images\/upload\/image\/201808\/thumbnail(3).jpg/
Replacement: some_domain_url/images/upload/image/201808/thumbnail(3).jpg
Content: <img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />
结果:不替换。我尝试用 %28 替换括号,但 %29 也不起作用。
补充:模式和替换存储在动态数组中。它必须由 REGEX 替换。 objective是将所有本地图片路径替换为云存储。
REGEX专家可以指点一下吗?
您需要像这样转义括号:
\(3\).jpg
是的,括号是正则表达式中的特殊字符。他们需要逃脱。但是你让这比它需要的更困难。只需使用 str_replace
,因为您没有使用正则表达式的任何好处。
str_replace('/images/upload/image/201808/thumbnail(3).jpg', 'some_domain_url/images/upload/image/201808/thumbnail(3).jpg', '<img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />');
或 i
如果您想不区分大小写:
str_ireplace('/images/upload/image/201808/thumbnail(3).jpg', 'some_domain_url/images/upload/image/201808/thumbnail(3).jpg', '<img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />');
或者...正确的冗长方式:
$dom = new domdocument();
$dom->loadhtml('<img src="/images/upload/image/201808/thumbnail(3).jpg" alt="" />', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$imgs = $dom->getelementsbytagname('img');
if(strpos($imgs[0]->getAttribute('src'), '/images/upload/image/201808/thumbnail(3).jpg') !== FALSE) {
$imgs[0]->setAttribute('src', 'some_domain_url' . $imgs[0]->getAttribute('src'));
echo $dom->saveHTML();
}