我想转换以下内容:
1. From:
<img class="lazyjs bbcodeImage" src="//google.com/blank.gif" data-original="http://google.com/poster.jpg" alt="image" />
1. To:
<img src="http://domain.com/poster.jpg" />
2. From:
<a rel="nofollow" href="/confirm/url/aHR0cDovL2dvb2dsZS5jb20%3D/" class="ajaxLink">
2. To:
<a href="http://google.com">
基本上,我想将data-original
用于<img src
。<a href
首先用base64_encode
编码,然后用urlencode
编码。
以下是我迄今为止所做的工作:
<?php
// 1
$string = '<img class="lazyjs bbcodeImage" src="//google.com/blank.gif" data-original="http://google.com/poster.jpg" alt="image" />';
echo preg_replace('/<img class="lazyjs bbcodeImage" src="'/'/google.com'/blank.gif" data-original="(.*?)" alt="image" '/>/', '<img src="$1" />', $string);
// 2
$string = '<a rel="nofollow" href="/confirm/url/aHR0cDovL2dvb2dsZS5jb20%3D/" class="ajaxLink">';
echo preg_replace('/<a rel="nofollow" href="'/confirm'/url'/(.*?)'/" class="ajaxLink">/', '<a href="$1">', $string);
?>
问题是在2
上我不知道如何解码$1
。
可能会有人建议使用regex
,但根据RegEx的说法,除了XHTML自包含标签之外,匹配开放标签不是一个合适的解决方案。感谢上帝,有人做了PHPquery。通过这种方式,您可以像在jQuery中习惯的那样使用选择器来选择这些属性。
无论如何,我想我做到了:
<?php
// 1
$string = '<img class="lazyjs bbcodeImage" src="//google.com/blank.gif" data-original="http://google.com/poster.jpg" alt="image" />';
echo preg_replace('/<img class="lazyjs bbcodeImage" src="'/'/google.com'/blank.gif" data-original="(.*?)" alt="image" '/>/', '<img src="$1" />', $string);
// 2
$string = '<a rel="nofollow" href="/confirm/url/aHR0cDovL2dvb2dsZS5jb20%3D/" class="ajaxLink">';
echo preg_replace_callback('/<a rel="nofollow" href="'/confirm'/url'/(.*?)'/" class="ajaxLink">/', function ($match) { return '<a href="' . base64_decode(urldecode($match[1])) . '">'; }, $string);
?>