有沒有人熟PHP??有個問題想請教

如下的程式碼

<?php
$string="this \\\\"is a test";
$replace=ereg_replace("\\\"","\"",$string);
echo "replace=$replace";
?>

簡單來說就是字串裡會有 \" 出現
我想用 " 取代
但秀出來的字串仍然是 this \"is a test
是哪裡出了問題呢??
有沒有網友能給個建議或是思考方向的~~感恩啊~~~



TO二樓:
問題裡的字串我少給兩個反斜線,所以出來的結果是對的
因為\"等於"

TO四樓:
這個函式stripslashes可以用,
但我突然想到一個問題
我的文件檔裡面會有如下面這樣的一行
echo "<input type=\"submit\" name=\"submit\" value=\"確定\">\n";
這時候反斜線就不能去掉了……


我想應該要把問題的根本陳述一下,
會寫這程式主要是因為公司主機放在另一棟大樓,
而我想要在我的位置上能將遠端主機裡的程式碼叫出來修改後再存回,
這樣就不用跑去另一棟大樓修改程式碼了……
而目前的狀況是,
程式碼已經可以叫出來修改,
(目前的作法是
<textarea>程式碼</textarea>
修改完後按個submit就可將資料寫回)
但在存回的過程遇到"或是'
就會自動變成\"或是\'
而且修改愈多次反斜線就愈多……
之前查了一下網路上的資料
也將php.ini裡面的
magic_quotes_gpc跟magic_quotes_sybase由Off改成On
但結果還是一樣…
有哪位高手能告訴我該怎麼做,
才能讓雙引號跟單引號在寫回時不自動加反斜線呢??
2007-08-23 1:05 發佈
文章關鍵字 問題
應該沒有錯

我剛試過用你的 code

是可以出

(replace=this "is a test)

lingalan wrote:
應該沒有錯我剛試過用...(恕刪)


疑??那奇怪了…
這兩天一直在公司試都不行…
能不能請問一下網友的作業系統跟php版本是如何??
會是這問題嗎??

我的環境是用windows XP+Apache+PHP5.x版...
騎小折趴趴走,用LOMO看世界
<?php
$string="this \\"is a test";
$replace=ereg_replace("\\\"","\"",$string);
echo "replace=$replace";
?>

試試看:
<?php
$string="this \\"is a test";
#$replace=ereg_replace("\\\"","\"",$string);

$replace = stripslashes($string);

echo "replace=$replace";
?>
自己推一下,
看白天曝光率會不會比較高一點……
騎小折趴趴走,用LOMO看世界
>TO四樓:
>這個函式stripslashes可以用,
>但我突然想到一個問題
>我的文件檔裡面會有如下面這樣的一行
>echo "<input type=\"submit\" name=\"submit\" value=\"確定\">\n";
>這時候反斜線就不能去掉了……

簡單、把input裡面所有雙引號通通去掉,那就不用那些反斜線了............

還有、你的問題真的有點讓人看不懂,我只能就我"猜"的出來的部分回答:
>才能讓雙引號跟單引號在寫回時不自動加反斜線呢??
麻煩乖乖的在每次post之後有問題的變數加上"stripslashes"吧。
還有<textarea><?=stripslashes($var);?></textarea>...........(看得懂吧?)
希望以下的程式對你有用

$string="this \\\\\\is a test";
$sOrgString = "" ;
$sAfterString = "" ;
for ($j=1; $j<=Len($string) ;$j++){
$sOrgString = CharToAscii(Mid($string, $j, 1)) ;
if ($sOrgString==92){
$sOrgString = 34;
}
$sAfterString = $sAfterString . AsciiToChar($sOrgString) ;
}
echo "replace=$sAfterString";


CharToAscii & AsciiToChar & Len & Mid 是我自己寫的function 所以在此不再多說明
我的作法是將文字轉為ascii 再由ascii去判對是否為 斜線 這種東西
若是為斜線 就把他置換成 雙引號 的 ascii
最後再轉為char 並且組合起來

所以最後結果為

this """is a test

不知道有沒有符合你的需求 ?
這個問題喔......
其實是設定的問題
你可能會遇到,相同的程式碼,在某一台機器就是不會有反斜線,另一台就一定會出來

參考以下網頁,主要就是php.ini裡面magic_quotes_gpc設定值的問題:
http://yen.mde.nfu.edu.tw/pivot/entry.php?id=117

希望這樣有助於你解決問題
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?