如何在PHP中捕获另一个字符串中某个位置的字符串?

如何在PHP中捕获另一个字符串中某个位置的字符串?,php,Php,我需要替换成千上万的sql行,如下所示: 更新table1集合id=2651,标签=‘黑色’,其中表格id=2651 如何在单引号中捕捉单词(在本例中为“黑色”)?使用正则表达式-请查看preg\u replace的文档。要匹配label='Black'您可以使用正则表达式如下:label\s*=\s*\'Black\'如果您将该请求作为字符串处理,则可以使用and: $req=“更新table1集合id=2651,label='Black'其中table.id=2651;” 要在$req中捕

我需要替换成千上万的sql行,如下所示:

更新table1集合id=2651,标签=‘黑色’,其中
表格
id
=2651


如何在单引号中捕捉单词(在本例中为“黑色”)?

使用正则表达式-请查看
preg\u replace
的文档。要匹配
label='Black'
您可以使用正则表达式如下:
label\s*=\s*\'Black\'

如果您将该请求作为字符串处理,则可以使用and:

$req=“更新table1集合id=2651,label='Black'其中table.id=2651;”

  • 要在
    $req
    中捕获单词“Black”:
    $pat='/label=\'(.*?\'/');
    预匹配($pat,$req,$MATCHS);
    echo$匹配[1]

  • 要替换
    $req
    中的单词“Black”(无需执行上述步骤):
    $newReq=preg\u replace('/label=\'(.*?\'/','label=\'white\'',$req);
    echo$newReq


谢谢。由于引号中的单词可以是任何东西,我可以在preg\u match()或preg\u replace()中使用label\s*=\s*\'*\'吗?我对正则表达式很困惑。点(.)匹配任何字符,而星(*)表示零或更多,所以。*翻译为“任意字符任意次数”。label\s*=\s*\'.\\'是您需要的。很遗憾,我遇到了字母数字或齿隙分隔符错误。我使用了fopen()、fgets()、str_replace()和file_put_contents()的组合。结果很好,只是有许多冗余(同一行添加了多行)。我认为最好捕获引号中的单词,然后对照新词数组进行检查。但我不知道如何用引号来表达这个词。