1

我想将所有输入值编码为 base64 编码。所以我需要一些帮助......我的代码是:

$check_hash = preg_match_all('/<input type="text" value="(.*?)">/mis', $ays, $hashtweet);

$ays = preg_replace('/<input type="text" value="(.*?)">/', base64_encode($hashtweet[1]), $ays);

echo $ays;

我的页面在这里: http ://www.ceay.biz/test/vkmp3/

但它没有给我我想要的。谁能帮我?

4

3 回答 3

2

使用 preg_replace_callback 执行此操作(需要 php 5.3 才能关闭)

$ays = preg_replace_callback('/value="(.*)"/', function ($match) {
                          return "value=\"".base64_encode($match[1])."\""; }, $ays);

用于 php 5.3 之前的环境

if (!function_exists("valueReplacer")){
    function valueReplacer ($m){
        return "value=\"".base64_encode($m[1])."\""; 
    }
}
$ays = preg_replace_callback('/value="(.*)"/', "valueReplacer", $ays);
于 2013-07-18T14:40:28.730 回答
1

您需要调用preg_replace_callback以执行 PHP 代码作为替换:

$ays = preg_replace_callback('/<input type="text" value="(.*?)">/', function ($m) {
                             return base64_encode($hashtweet[1]); }, $ays);
于 2013-07-18T13:52:11.743 回答
0

你可以检查这个:

$string = '<input type="text" value="http://cs9-10v4.vk.me/p1/63ec3a36b2eb1c.mp3">';
preg_match('/<input type="text" value="(.*)">/', $string, $matches);
$string = preg_replace('/(<input type="text" value=").*(">)/', "$1".base64_encode($matches[1])."$2", $string);
var_dump($string);
于 2013-07-18T14:05:55.193 回答