需要简单的正则表达式建议

时间:2012-09-14 11:56:38

标签: php regex

不幸的是,由于规划不当,我需要逐个字段地编辑一个巨大的html表单。但是因为它只是找到和替换我想我可以让这个过程更快。 所以......所有的字段看起来都或多或少是这样的:

<td align="left" width="30%">Incoming date:</td>
<td align="left">
<input name="inc_date" class="frmfixededit" size="20"></td>
</tr>
....
<td align="left" width="30%">Name:</td>
<td align="left">
<input name="name" class="frmfixededit" size="20"></td>
</tr>

我想要做的是改变它:

<td align="left" width="30%">Incoming date:</td>
<td align="left">
<input name="inc_date" <?php if ($u==TRUE) echo "value='$row['inc_date']'"; ?> class="frmfixededit" size="20"></td>
</tr>
....
<td align="left" width="30%">Name:</td>
<td align="left">
<input name="name" <?php if ($u==TRUE) echo "value='$row['name']'"; ?> class="frmfixededit" size="20"></td>
</tr>

关于如何实现这一目标的任何建议?我不知道如何匹配

由于

2 个答案:

答案 0 :(得分:3)

在您选择的IDE中执行Regex Find&amp;替换为查找模式:

<input name="(.*)" class="(.*)" size="20">

并替换模式:

<input name="$1" <?php if ($u==TRUE) echo "value='$row['$1']'"; ?> class="$2" size="20">

在Textmate中为我工作。

答案 1 :(得分:2)

这个怎么样:

$result = preg_replace(
    '/<input name="  # Match start of tag
    ([^"]+)        # Match and capture the name
    "              # Match closing quote
    (.*)           # Match and capture rest of the line/x', 
    '<input name="\1" <?php if ($u==TRUE) echo "value=\'$row[\'\1\']\'"; ?>\2', $subject);