我在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 >';
...
我需要将所有= [a-z] [A-Z] [1-9]替换为=“[a-z] [A-Z] [1-9]”。我需要preg_replace的常规表达式
答案 0 :(得分:1)
您需要将它们全部用单引号括起来,如下所示:
$myHtml='<SPAN id="1" value="1" name="1"> one </SPAN>
<div id="2" value="2" name="2" > two</div >';
答案 1 :(得分:1)
$var = preg_replace('/(?<==)(\b\w+\b)(?!")(?=[^<]*>)/', '"$1"', $var);
感谢Ωmega,它在IE8上的作品
答案 2 :(得分:0)
使用heredoc,无需转义除$
以外的大多数内容:
$var = <<<EOL
<span id="1" value="1" name="1">one</span>
etc...
EOL
答案 3 :(得分:0)
我会通过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>
标记,则需要对此代码进行修改。我将其作为练习留给OP。