У меня есть строковая переменная в PHP, ее содержимое:
$var='<SPAN id=1 value=1 name=1> one</SPAN> <div id=2 value=2 name=2> two</div >'; ....
Мне нужна функция для атрибутов объемного html с помощью «» Мне нужно сделать это для всего метатега
, и т. д. результат должен быть следующим:
$var='<SPAN id= "1" value="1" name="1"> one </SPAN> <div id="2" value="2" name="2" > two</div >'; ...
Мне нужно заменить all = [az] [AZ] [1-9] на = "[az] [AZ] [1-9]". Мне нужно регулярное выражение для preg_replace
Вам нужно обернуть все это в одинарные кавычки следующим образом:
$myHtml='<SPAN id="1" value="1" name="1"> one </SPAN> <div id="2" value="2" name="2" > two</div >';
Его решение
$var = preg_replace('/(?<==)(\b\w+\b)(?!")(?=[^<]*>)/', '"$1"', $var);
спасибо за Ωmega, его работы на IE8
используйте heredoc, который устраняет необходимость избегать большего всего, кроме $
:
$var = <<<EOL <span id="1" value="1" name="1">one</span> etc... EOL
Я бы DOMDocument
строку через DOMDocument
:
$var='<SPAN id=1 value=1 name=1> one</SPAN> <div id=2 value=2 name=2> two</div >'; // Create a new DOMDocument and load your markup. $dom = new DOMDocument(); $dom->loadHTML($var); // DOMDocument adds doctype and <html> and <body> tags if they aren't // present, so find the contents of the <body> tag (which should be // your original markup) and dump them back to a string. $var = $dom->saveHTML($dom->getElementsByTagName('body')->item(0)); // Strip the actual <body> tags DOMDocument appended. $var = preg_replace('#^<body>\s*(.+?)\s*</body>$#ms', '$1', $var); // Here $var will be your desired output: var_dump($var);
Вывод:
string(85) "<span id="1" value="1" name="1"> one</span>\n<div id="2" value="2" name="2"> two</div>"
Обратите внимание, что если $var
может содержать фактический <body>
, изменения должны быть внесены в этот код. Я оставляю это как упражнение для ОП.