2012-02-25 92 views
-1

我真的不知道這一切,我能想到的是正則表達式。這就是我真正想要做的。我有這個HTML標籤。使用php替換字符串內容,如何轉義空格?

<link rel="alternate" type="text/html" href="frenchnew.html" hreflang="fr" lang="fr" title="title"> 

我想更換這整個刺成說:

<link rel="alternate" type="text/html" href="new.html" hreflang="ca" lang="ca" title="new"> 

我使用str_replace()方法。但問題是如果搜索字符串之間具有這樣的屬性之間的空格:type="text/html"<spance1><spance2><spance3>href="frenchnew.html"如何在匹配字符串時尋找匹配項?使用正則表達式?我不知道該怎麼做?請幫我...

回答

1

你可以做「尖」與更換的地圖替代,這樣的:

$new_link = str_replace(
    array('="frenchnew.html"', '="fr"', ...), 
    array('="new.html"', '="ca"', ...) 
); 

...所以間距不會在所有問題,因爲它們不會被改變。

+0

感謝您的回覆。我想一次性改變整個事情,因爲在使用您提到的方法時會出現問題。我正在閱讀文件並替換該文件中的內容。如果在別的地方還存在另一種類似於搜索字符串「=」frenchnew.html「'的字符呢?它也將被取代... – guitarlass 2012-02-25 05:10:07

0

這是一個正則表達式,應該適用於您的示例,無論屬性之間有多少空格。

$original_string = '<link rel="alternate" type="text/html" href="frenchnew.html" hreflang="fr" lang="fr" title="title">'; 
$pattern = '<link\s+rel="alternate"\s+type="text\/html"\s+href="frenchnew\.html"\s+hreflang="fr"\s+lang="fr"\s+title="title">'; 
$replacement = '<link rel="alternate" type="text/html" href="new.html" hreflang="ca" lang="ca" title="new">'; 

$new_string = preg_replace("/$pattern/", $replacement, $original_string); // Contains your new string 
相關問題