簡體   English   中英

簡單的preg替換我不知道

[英]Simple preg replace I cannot figure out

我花了幾個小時試圖解決這個問題,但我還是無法解決。 我只是希望preg_replace只從錨標記中刪除http:// 我嘗試了這個str_replace但是您已經知道它在preg_replace內部不起作用:

$site = preg_replace('/<a href="(.*?)">/','<a href="mypage.php?url='. str_replace("http://", "", "$1") .'">', $site);

我只希望任何錨鏈接刪除http://部分,但不希望圖像鏈接刪除,因此它不會破壞<img src =“ .....”>標簽。 僅錨標記的網址。 實際上,如果可以刪除http://和www。 分開也很棒。 因此http://google.comhttp://www.google.com將顯示為google.com。 謝謝。

$1不是真正的變量,因此不能在其上使用str_replace

嘗試這個 :

$site = preg_replace('/<a href="http:\/\/(.*?)">/','<a href="mypage.php?url=$1">', $site);

通過將http://放在模式中,可以確保它不會在$1 當然,您確實需要在其前面加上反斜杠來轉義/ 因此:\\/\\/

如果您還需要將其用於https,請嘗試:

$site = preg_replace('/<a href="https?:\/\/(.*?)">/','<a href="mypage.php?url=$1">', $site);

? s將允許它存在或不存在。 當然,這會將鏈接https://google.com重寫為mypage.php?url=google.com ,而這可能不是您想要的(您不再知道它是http還是https)

對於www。 部分:

$site = preg_replace('/<a href="https?:\/\/(www\.|)(.*?)">/','<a href="mypage.php?url=$2">', $site);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM