У меня есть серия URL-адресов в веб-документе, что-то вроде этого:
<a href="somepage.php?x=some_document.htm">click here</a>
Что я хочу сделать, это заменить жирный кусок:
some_document.htm"> нажмите здесь
.. с каким-то зашифрованным вариантом (скажем, base64_encoding) .. примерно так:
для каждого совпадения, превратить его в base64_encode (совпадение)
Примечания:
1. фраза href = "somepage.php? X = всегда будет предшествовать фразе.
2. Двойная кавычка (" ) всегда будет следовать фраза.
Я не гуру регулярных выражений, но я знаю, что некоторые из вас. Есть ли простой способ сделать это?
UPDATE:
Я решил это, используя измененную версию того, что представил Крис, вот оно:
function encrypt_param( $in_matches ) {
return 'href="somepage.php?x=' . base64_encode( $in_matches[1] ) . '"';
}
$webdoc = preg_replace_callback( '/href="somepage.php\?x=([^"]+)"/',
'encrypt_param',
$webdoc );