2013-11-27 19 views
0

我使用php刪除部分字符串時遇到了一些小問題。 讓我給你一點問題,我有可引用的「column1text」,其中是文本字符串調入< textarea>,但沒關係。我想從這個字符串中刪除所有的HTML標籤,因爲他們有時會遇到問題。例如:當這個字符串包含</body>或</table>時,它會做很多不必要的混亂。所以我想把這些標籤拿走。使用str_replace在php中刪除部分字符串

我正在使用$column1text = str_replace("TEXT TO REMOVE", "", $column1text);它的工作原理,但我想爲它做功能(如果你知道更簡單的方法,只要告訴我,我會很高興)。

我使用這個功能: function remove($removetext) { $column1text = str_replace($removetext, "", $column1text); }

,我使用它是這樣的: remove("TEXT TO REMOVE");

我在做什麼錯? (我相信這是非常愚蠢的,但我找不到它!)

P.S.我對我的英語感到非常抱歉,這聽起來很愚蠢,但除了問你別無他法。

回答

0

當您實際需要通過引用傳遞時,您正在傳值。如果你不知道有什麼不同,我建議讀一下它。

Link

編輯:

簡而言之,當你傳遞一個函數的參數,該功能使得無論它傳遞的副本,所以當該參數的功能進行操作,它操縱副本而不是傳遞的對象本身。

當一個函數有一個通過引用傳遞的參數時,它實際上可以訪問自己傳遞的對象。這意味着您操作該對象的任何操作都會影響該函數以外的對象(因爲它不僅僅是您正在使用的對象的副本)。

+0

這是你在回答問題的嘗試? – Kermit

+0

@FreshPrinceOfSO不,我碰巧提交得太早了。我編輯精心製作。 – echochamber

4

您可以在$column1text通作參考,或有你的函數返回修改後的文本(我喜歡)

function remove($column1text, $removetext) { 
    return str_replace($removetext, "", $column1text); 
} 

$column1text = remove($column1text, '<span>'); 
+0

謝謝!我很高興它的工作原理:-)只...是''還是'''?因爲'>'遠離休息......是正確還是錯誤? – user3043260

+0

啊,這是我的一個錯字。糾正。 – Extrakun

0

你需要告訴您要使用全局變量的解釋,因爲現在它看到它作爲局部變量(在你的函數中)。要做到這一點,你只需要使用global關鍵字:

function remove($removetext) { 
    global $column1text; 
    $column1text = str_replace($removetext, "", $column1text); 
} 

你可以閱讀更多關於它在這裏http://php.net/manual/en/language.variables.scope.php

+0

雖然它有效,但我建議遠離全局變量。 – Extrakun