Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 8 years ago

php 的 str_replace 函數無法處理網址問題

我使用 str_replace 想將文字文件內等同 $GIArray 的陣列內容替換成 $MinArray 的陣列內容....

例如:若文字文件內有跟 $GIArray[1] 一樣的字串的話,用 str_replace 函數將該字串換成 $MinArray[1] 的值...

其中 $GIArray 和 $MinArray 裡面的資料都是包含 "http://" 這類字樣的網址型式....

我用 for 迴圈試過...可是沒有任何東西被替換...

我也試過不寫索引值而將陣列直接用在 str_replace 裡....但一樣無效...

反倒 str_replace 的第一個參數是純字串而非變數或陣列時就能正常替換....

請各位 PHP 高手解答這個問題,若有其他問題的話再通知我,謝謝!

Update:

To Hareion:

對,我就是這樣的功能。

不過 $textbook 的內容在被替換之後,還要用 fwrite 或 fputs 寫入文字文件檔案裡。

Update 2:

To Hareion:

還有,我剛剛執行你寫的程式內容。

發現你那樣會先將所有的 http://tw.yahoo.com 先替換成 http://google.com。

可是這樣一來第二次要替換時就會因為 $textbook 裡沒有 http://tw.yahoo.com,所以後面的替換就無效了。

執行結果如下↓

全新功能!Googlehttp://google.com/123456/index.php+ 活動 - 賞心悅目的邀請http://google.com介面、方便http://google.com/abcdef/ind...

Update 3:

To Hareion:

您改寫後的方式OK,所以我想問一下修改後的程式運作邏輯。

這樣我就能將程式寫進我的專案內容裡。

Update 4:

To Hareion:

那萬一字串長度一樣的話要怎麼辦??

例如:

http://tw.yahoo.com/event/01.php

http://tw.yahoo.com/event/02.php

http://tw.yahoo.com/event/03.php

因為我的程式內大部分的字串長度都一樣,就只是編號在改變而已。

Update 5:

To Hareion:

我將您程式的 $GIArray 索引值改為http://tw.yahoo.com/event/01.php、02.php和03.php

三種字串長度一樣的網址。

執行結果如下↓

全新功能!Googlehttp://tw.yahoo.com/event/01.php/event/02.php+ 活動 - 賞心悅目的邀請http://tw.yahoo.com/event/01.php介面、方便http://tw.yah...

01.php 的網址可以正確替換,可是02和03就不行了。

Update 6:
Update 7:

我回你囉!還是你這段時間沒回來看??

如果不行的話沒關係,沒有回覆的話我一樣給你最佳解答,感謝您的熱心幫助。

1 Answer

Rating
Still have questions? Get your answers by asking now.