2015-09-12 2 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

Вот как вы можете достичь того же, без регулярных выражений, но с DOMDocument и DOMXPath:

$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 означает, что вы хотите get string тег, который имеет атрибут name со значением abs__action_bar_home_description.

Если вы загрузите файл HTML, вы можете использовать что-то вроде

$dom->loadHTMLFile("http://www.example.com/content.html"); 
Смежные вопросы