2015-09-12 82 views
0

我想用php更改變量值的標記值;更改值標記PHP

$tag = '<string name="abs__action_bar_home_description">My old title</string>'; 
$new_title = 'My new title'; 

結果:

<string name="abs__action_bar_home_description">**My new title**</string> 
+0

您是否嘗試過的東西? – Rizier123

+0

你想操縱HTML代碼嗎?如果是的話,使用DOMDocument和DOMXPath,這個組合非常強大和高效。 –

回答

2

您可以使用PHP函數的preg_replace。例如你here

<?php 

$tag = '<string name="abs__action_bar_home_description">My old title</string>'; 
$new_title = 'My new title'; 

$pattern = "/(<string[\s\w=\"]*>)([\w\s]*)(<\/string>)/i"; 
$replacement = "$1".$new_title."$3"; 
$result = preg_replace($pattern, $replacement ,$tag); 

echo $result; 

?> 
+0

不錯,謝謝! – user2556254

+0

嗨,當你有「?」時不起作用。例。 $ tag ='在Play商店中確認您的記事?' – user2556254

+0

您應該更改第6行代碼:'$ pattern =「/()(。*)(<\/ string>)/ i「;' – viktarpunko

1

這裏是你如何能做到無正則表達式相同,但與DOMDocumentDOMXPath

$tag = '<string name="abs__action_bar_home_description">My old title</string>'; 
$new_title = 'My new title'; 
$dom = new DOMDocument('1.0', 'UTF-8'); 
@$dom->loadHTML($tag, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 

$xpath = new DOMXPath($dom); 
$links = $xpath->query('//string[@name="abs__action_bar_home_description"]'); 

foreach($links as $link) { 
    $link->nodeValue = $new_title; 
} 

echo $dom->saveHTML(); 

IDEONE demo

'//string[@name="abs__action_bar_home_description"]'的XPath意味着你要獲得string標記,該標記的屬性name的值爲abs__action_bar_home_description

如果加載HTML文件,你可以使用像

$dom->loadHTMLFile("http://www.example.com/content.html");