正则表达式查找和替换

时间:2011-03-17 13:19:24

标签: php mysql regex

我在PHP中遇到RegEx问题,但似乎无法找到答案。

我有一个字符串,即3个字母,全部大写,即COS。

字母会改变,但总是3个字符长,在大写字母中,它也会在另一个字符串的中心,用逗号包围。

我需要一个regEx才能在字符串中找到3个大写字母,并将它们从COS变为'COS' (我这样做是为了修改sql插入字符串)

我似乎无法找到regEx,除非我使用了spercifit字母,但字母会改变。

我需要一些东西 [A-z] {3}然后替换为'[A-Z]'(我知道这不是正确的,只是简写)

有人有什么建议吗?

干杯

编辑:

只是想添加任何人以后会遇到这个问题:

sql insert string(从外部源提供,ftp每天提供给我的服务器) 包含3个大写字符串两次,一次用逗号,一次用out 所以我不得不删除第一个regEx中添加的双逗号

$sqlString = preg_replace('/([A-Z]{3})/', "'$1'", $isqlString);
$sqlString = preg_replace('/\'\'([A-Z]{3})\'\'/', "'$1'", $sqlStringt);

谢谢大家

4 个答案:

答案 0 :(得分:1)

你其实很亲密。你可以使用:

echo preg_replace('/([A-Z]{3})/', "'$1'", 'COS'); //will output 'COS'


对于MySQL语句,我建议使用函数mysql_real_escape_string()

答案 1 :(得分:0)

$string = preg_replace('/([A-Z]{3})/', "'$1'", $string);

http://php.net/manual/en/function.preg-replace.php

答案 2 :(得分:0)

假设它像你说的那样,“用逗号包围的三个大写字母,例如

  

Foo bar,COS,Foo Bar

您可以使用前瞻和后视并找到字母:

(?<=,)([A-Z]{3})(?=,)

然后用单引号简单替换为环绕就足够了:

'$1'

所有人一起Here's it working

答案 3 :(得分:0)

preg_replace('/(^|\b)([A-Z]{3})(\b|$)/', "'${2}'", $string);