2013-11-22 61 views
0

我想用%20替換鏈接中的每個空間。用%20替換href中的空格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