2012-10-27 64 views
1

我想操縱一個字符串,以便<a href><\a>內的任何引號(「)被取出...對不起,如果它之前被問過,但我不能讓它工作!順便說一句,我POSTFronting來自一個表單的數據,然後操縱字符串,這基本上是html,但是它是以字符串的形式出現的,我想對圖像和鏈接等東西進行引用......另一件事是,我不想逃避引用,因爲這將打破鏈接...而且整個問題是,可以使用HTML和工作正常...但現在,東西是自動創建第二套引號內的正常報價,如下所示:<a href="\"http://www.example.com/\""></a>如何操作字符串以刪除引號?

示例輸入將是:<p><a href="http://www.example.com">example</a></p>

繼承人如何出現時我贊同它不過:<p><a href=\"http://www.example.com\">example</a></p>

我下面有多麼希望它看起來:<p><a href="http://www.example.com">example</a></p>

所以我實際上是想擺脫(/)我的壞...

HERES IM如何使用它:

我我使用富文本編輯器來編寫html,然後通過post方法通過表單發送它,但它始終使用雙引號......我注意到,當我編輯RTE的源並取出所有引號時,鏈接將起作用。 ..但我不能讓我的用戶進入源代碼,並每次都這樣做,所以我需要一個解決方案,它會自動...

+0

我知道str_replace()函數,但它有能力來選擇所有引號(「)只能從內 and? – user1751581

+0

你可以給一個整體例如輸入和通緝輸出? – bukart

+1

我給了上面的例子...我編輯了這篇文章 – user1751581

回答

2

ok ..所以你可以嘗試$result = stripslashes($string)或做它用正則表達式像

$result = preg_replace('/\\\\(?=")/', '', $string)

$result = preg_replace('/\\\\"/', '"', $string)但在這種情況下,更好的將是$result = str_replace('\\"', '"', $string)



編輯:這工作對我很好

$input = '<p><a href=\"http://www.example.com\">example</a></p>'; 

echo htmlspecialchars($input) . '<br/>'; 

$output = preg_replace('/\\\\(?=")/', '', $input); 

echo htmlspecialchars($output) . '<br/>'; 
+0

仍然沒有取代它...掛上,我要編輯帖子... – user1751581

+0

哦..我的壞,我錯過了我的正則表達式中的反斜槓,更新,請嘗試再 – bukart

+0

我不知道爲什麼,但它仍然沒有更換字符串...也許它的東西與回聲陳述...你有沒有檢查我對上述職位的修訂? – user1751581

-1

是的,這是可能的,但使用preg_replace()與正則表達式模式爲此,而不是str_replace()函數。 http://php.net/manual/en/function.preg-replace.php

+0

我剛剛讀到RegEx對HTML解析不太實用,你確定能工作嗎? – user1751581

+0

我給了上面的例子...我編輯帖子 – user1751581

+0

技術上你不應該使用Preg_replace或Regexp去除魔術曲OTE。它已被棄用。 http://php.net/manual/en/security.magicquotes.php 如果你拒絕關閉它,條形斜線適用於你的情況。 http://php.net/manual/en/function.stripslashes.php –

0

我以前的答案有幾個問題,但這應該起作用。

$string='<a href="gf">ahdasd"asjda</a>'; 
function replacequotes($matches){ 
return $matches[1].str_replace('"','',$matches[2]).$matches[3]; 
} 
echo preg_replace_callback('/(<a href=)(.+?)(<\/a>)/','replacequotes',$string); 

這裏是一個演示:http://codepad.org/nXr7XTpx

0

如果你正在尋找只需更換不論其地理位置的雙引號的所有實例,那麼str_replace函數可以做到這一點爲好;

str_replace("\"", "", $string); 

(反斜槓用於讀取引號作爲非文字字符)

當然,這種方法的缺點是,它是不加選擇,但我想我會發布此,因爲是你想要使用正則表達式(比如preg_match)的時候,以及其他時候你想要替換字符串中的所有子字符串實例的時候。

+1

如果你想從字符串的某些部分刪除字符,那麼preg_match就是要走的路。否則,您必須在搜索之前去掉標籤,然後將它們重新添加到字符串中,這會讓事情變得混亂。 –

+0

現在的問題是,我甚至不能根據str_replace改變我的字符串!我嘗試了以上,沒有運氣:( – user1751581

相關問題