Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换<;img>;src和解码<;a>;href_Php - Fatal编程技术网

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);
?>