可能重复:
preg_replace how surround html attributes for a string with " in PHP
如何使用preg_replace()
更改<
>
内和=
之后所有包含双引号的单词的单词
$var="<myfootball figure=thin new=aux(comment); > this=Association football < name=football >"
到
$var="<myfootball figure="thin" new="aux(comment);" >this=Association footballl< name="football" >"
使用preg_replace()
执行此操作的常规表达是什么?
答案 0 :(得分:3)
将(?<==)(\b\w+\b)(?!")(?=[^<]*>)
替换为"$1"
$var = preg_replace('/(?<==)(\b\w+\b)(?!")(?=[^<]*>)/', '"$1"', $var);
编辑(根据OP的评论和问题更新)&gt;&gt;
将(?<==)(\b\S+?)(?=[\s>])(?!")(?=[^<]*>)
替换为"$1"
$var = preg_replace('/(?<==)(\b\S+?)(?=[\s>])(?!")(?=[^<]*>)/', '"$1"', $var);
答案 1 :(得分:1)
我认为最好把它放在2个正则表达式中。第一个表达式匹配<
和>
之间的所有内容,第二个表达式引用=
之后的文本。
$value = preg_replace_callback('|<(.*?)>|', function($matches) {
// $matches[1] is now the text between < and >
return '<'.preg_replace('|=(\w+)|', '="\\1"', $matches[1]).'>';
}, $var);