PHP使用preg_replace用双引号替换单词

时间:2012-11-10 19:26:27

标签: php regex string replace preg-replace

  

可能重复:
  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()执行此操作的常规表达是什么?

2 个答案:

答案 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);