У меня есть HTML-файл, содержащий некоторые данные, включая некоторые URL-адреса.
Только в этих URL-адресах я хочу заменить символ _
на пробел (через файл php).
Таким образом, URL-адрес, подобный следующему:
</p><p><a rel="nofollow" class="external text" href="http://10.20.0.30:1234/index.php/this_is_an_example.html">How_to_sample.</a>
станет
</p><p><a rel="nofollow" class="external text" href="http://10.20.0.30:1234/index.php/this is an example.html">How_to_sample.</a>
Это не должно влиять на _
, которые не включены в URL.
Iдумаю, что это возможно с помощью preg_replace, но я не знаю, как это сделать.
Следующий код неверен, поскольку он заменяет каждый _
, а не только тот, что в URL.
$content2 = preg_replace('/[_]/', ' ', $content);
Спасибо.
РЕДАКТИРОВАТЬ:
Спасибо за предложение preg_replace_callback
, это то, что я искал.
// search pattern
$pattern = '/href="http:\/\/10.20.0.30:1234\/index.php\/(.*?).html">/s';
// the function call
$content2 = preg_replace_callback($pattern, 'callback', $content);
// the callback function
function callback ($m) {
print_r($m);
$url = str_replace("_", " ", $m[1]);
return 'href="http://10.20.0.30:1234/index.php/'.$url.'.html">';
}