如何使用preg替换在替换字符串中插入找到的字母

时间:2013-02-06 07:47:14

标签: php regex preg-replace

我想替换下面写的字符串

AND ( (wp_usermeta.meta_key = 'first_name' AND CAST(wp_usermeta.meta_value AS CHAR) LIKE '%A%')
AND  (mt1.meta_key = 'wp_capabilities' AND CAST(mt1.meta_value AS CHAR) LIKE '%\"s2member\\_level2\"%') )

AND ( (wp_usermeta.meta_key = 'first_name' AND CAST(wp_usermeta.meta_value AS CHAR) LIKE 'A%')
AND  (mt1.meta_key = 'wp_capabilities' AND CAST(mt1.meta_value AS CHAR) LIKE '%\"s2member\\_level2\"%') )

在上面的内容中,我想要实现的是将%[a-zA-Z]%替换为[a-zA-Z]%

4 个答案:

答案 0 :(得分:1)

您需要捕获该字母并再次插入替换字符串。

%([a-zA-Z])%

这将捕获该字母,因为括号周围。

并替换为

$1%

$1是该捕获组的内容

在PHP中它看起来像

$SourceString = preg_replace('/%([a-zA-Z])%/', '$1%', $SourceString);

答案 1 :(得分:0)

使用$string = str_replace("%A%", "%A", $string);

答案 2 :(得分:0)

我不确定,但你可以尝试一下。

$find ="/%A%/"; 
$replace ="A%"; 

echo preg_replace ($find, $replace, "AND ( (wp_usermeta.meta_key = 'first_name' AND CAST(wp_usermeta.meta_value AS CHAR) LIKE '%A%')"); 

答案 3 :(得分:0)

您可以执行以下操作

$data = "AND ( (wp_usermeta.meta_key = 'first_name' AND CAST(wp_usermeta.meta_value AS CHAR) LIKE '%A%')
AND  (mt1.meta_key = 'wp_capabilities' AND CAST(mt1.meta_value AS CHAR) LIKE '%\"s2member\\_level2\"%') )";

$data = str_replace("%A%", "A%", $data);

希望这有帮助