2

我在 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 >';
 ...

我需要将所有 =[az][AZ][1-9] 替换为 ="[az][AZ][1-9]"。我需要 preg_replace 的正则表达式

4

4 回答 4

1

您需要将其全部用单引号括起来,如下所示:

$myHtml='<SPAN id="1" value="1" name="1"> one </SPAN>
    <div id="2" value="2" name="2" > two</div >';
于 2012-11-10T16:27:37.557 回答
1

它是解决方案

$var = preg_replace('/(?<==)(\b\w+\b)(?!")(?=[^<]*>)/', '"$1"', $var);

感谢 Ωmega,它适用于 IE8

于 2012-11-11T01:18:44.130 回答
0

使用一个heredoc,它消除了大多数东西的需要,除了$

$var = <<<EOL
<span id="1" value="1" name="1">one</span>
etc...
EOL
于 2012-11-10T16:32:47.680 回答
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。

于 2012-11-10T17:32:42.100 回答