2011-04-13 51 views
0

我使用curl來獲取html並將其保存到$ content。然後我嘗試str_replace函數,這是行不通的:str_replace在某些情況下不起作用

echo str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications','OK',$content);

但是,當我嘗試打印$內容和複製源並再次將其保存到$內容,它的工作原理:

回聲$內容;然後,我複印打印並保存到再次$內容:

$content='It is <a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications';

有了新的內容$,上述作品的替代品。

+0

它適用於我 - PHP 5.3.2-1ubuntu4.5 – 2011-04-13 09:09:03

+1

它的工作.. http://codepad.org/6SLzSaLW – 2011-04-13 09:10:30

+0

再次發佈的問題不會改變這一事實,你還沒有演示如何重現問題。除非我們能夠重現它,否則我們無法修復它。 – 2011-04-13 10:22:01

回答

0

嘗試把「\「」也。我認爲這是這個問題。我不認爲‘風格’標籤有什麼,使其中的差別。

+0

's/nothing/anything /' – 2011-04-13 09:19:32

+0

thanx,有時候我很難用英文思考,通常我認爲用西班牙語 – elvenbyte 2011-04-13 09:23:57

0

我的猜測是多餘的空格或換行或類似的,請嘗試更換塊.. 如

str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" ','OK',$content); 
str_replace('" style="cursor: default;">Dojo</a> Applications','OK',$content); 

,並嘗試找出它失敗,那麼你就可以追查

+0

然後你可以用DOM操作代替hacky來代替破損的字符串。 – 2011-04-13 09:20:17

0

這個工作對我來說:

<?php 
$content='it is <a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications'; 
echo str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications','OK',$content); 

因此,您可能在字符串內部有實際的換行符,並且它們不以相同的格式編碼,例如一個是\n(Linux),另一個是\r\n(Windows)。您可以比較正常化前兩個字符串:

<?php 
$content = strtr($content, array(
    "\r\n" => PHP_EOL, 
    "\r" => PHP_EOL, 
    "\n" => PHP_EOL, 
)); 

在任何情況下,PHP具有優良的functions to handle HTML。我不會推薦任務的正則表達式:他們不可靠,很難得到差不多的權利。

+0

請閱讀我更新的問題。我懷疑我使用curl獲得的$內容與我在echo $ content中看到的不同。 – user570494 2011-04-13 09:23:03

+0

@ user570494:您是否使用「查看源代碼」或瀏覽器的HTML輸出「查看」它?你不可能從HTML輸出中正確地分析空白。 – 2011-04-13 09:46:30

+0

@ user570494 - 當您打印內容時,您如何看到文本包含的確切的結束字符?您更新的問題表明,問題正是我猜到的問題。 – 2011-04-13 09:46:49

相關問題