Php 替换<;img>;src和解码<;a>;href
我要转换以下内容:Php 替换<;img>;src和解码<;a>;href,php,Php,我要转换以下内容: 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/u
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">
问题是在
2
上,我不知道如何解码$1
可能会有人建议regex
,但根据这一说法,这不是一个合适的解决方案。谢天谢地,有人做了。通过这种方式,您可以像在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);
?>
如果你说的是JavaScript的jQuery库-这是一个PHP非HTML应用程序,所以我只能使用PHP。不,它是从JavaScript版本到PHP的一个端口,这就是为什么它被称为PHPquery…它快吗?我说的是每天10000000个查询。我真的不想包含任何类,但如果这是唯一的方法…@TurboHost 1000万对于当今的计算机来说并不多。但是如果你愿意,你仍然可以使用正则表达式,我想在这种情况下它是可以接受的。看看:preg\u replace\u callback()
确切地说,使用preg\u replace\u callback()
你也可以对匹配项应用回调函数。
<?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);
?>