2013-11-22 3 views
0

Я хочу заменить каждое пространство в ссылке с помощью% 20.Заменить пробелы в href% 20 в php

<a href="Replace the spaces here">Some text</a> 

я хочу, чтобы получить это:

<a href="Replace%20the%20spaces%20here">Some text</a> 

не так:

<a%20href="Replace%20the%20spaces%20here">Some%20text</a> 

Как это сделать? preg_replace? решение (потому что я не могу отправить ответ):

$search= '(href="(.*?)")s'; 
$replace= ''; 
$newstring= preg_replace_callback($search,create_function('$treffer','urlencode($treffer[0]);'),$string); 
+0

Можете ли вы показать нам свой код? – Pitchinnate

+1

Почему у вас есть ссылки без пробелов в первую очередь? Как создается эта страница? –

+0

Я согласен с @Pekka 웃 здесь. ДЕЙСТВИТЕЛЬНО Плохая практика заключается в том, что URL-адреса с пробелами в них в первую очередь. –

ответ

2

Для записки, каждый современный браузер будет обрабатывать следующий прекрасно:

<a href="Replace the spaces here">Some text</a> 

Если вы настаиваете, если делать это независимо, и если вы не можете urlencode() ссылки до того они» вы должны использовать любой из:

  • preg_replace_callback() или
  • DOM парсер

Использование либо позволит применять только urlencode(), где это необходимо.

+0

Это плохое предложение. –

+3

@SalmanA: нет, это не так. Это говорит ему не беспокоить, что правильно, и как это сделать, если он все еще хочет, что тоже правильно. –

+0

Вы всегда должны правильно кодировать URL-адреса; если вы не уверены, откуда происходит контент между 'href = '...''. –

3

Вы должны использовать функцию urlencode() для HREF части.

http://php.net/urlencode

+0

Увидев его текущий результат, я подозреваю, что он уже это делает. –

+1

Это вряд ли поможет - вы не можете просто применить 'urlencode()' к HTML-коду выше. –

+0

Если вы находитесь на PHP, вам обязательно нужно использовать существующие функции кодирования и декодирования на ваших URL-адресах (даже если у них нет пробелов). –

0

Вы можете попробовать это:

<a href="<? echo(urlencode("Replace the spaces here")); ?>">Some text</a> 
+0

Да, я хочу найти часть из href = "to" из строки, а затем выполнить urlencode() –

+0

@qwertz рассмотреть ответ на наши запросы для уточнения, затем –

+1

@ qwertz1029384756 Итак, вы говорите, что вы разбираете существующие html вместо написания новой страницы? (Кстати, я еще не могу попросить разъяснений по самому основному вопросу.) – Shihan

Смежные вопросы