我有正确的功能,只是没有从字符串中找到要删除的正确的正则表达式模式(ID:999999)。此ID值有所不同,但都是数字。我想删除包括括号在内的所有内容。
$string = "This is the value I would like removed. (ID:17937)";
$string = preg_replace('#(ID:['0-9']?)#si', "", $string);
正则表达不是更强大!需要帮助。
答案 0 :(得分:1)
试试这个:
$string = preg_replace('# \(ID:[0-9]+\)#si', "", $string);
您需要使用反斜杠\
来转义括号
你不应该在数字范围内使用引号
您应该使用+
(一个或多个)而不是?
(零或一个)
您可以在开头添加空格,以避免在结果字符串的末尾添加空格。
答案 1 :(得分:0)
在PHP中,正则表达式位于/
而不是#
,之后,括号用于捕获组,因此您必须将它们转义以匹配它们。
另外,要使用preg_replace
替换,您需要使用捕获组,因此在您的情况下/(\(ID:[0-9]+\))/si
将是一个很好的正则表达式。
答案 2 :(得分:0)
以下是两个选项:
代码:(Demo)
$string = "This is the value I would like removed. (ID:17937)";
var_export(preg_replace('/ \(ID:\d+\)/',"",$string));
echo "\n\n";
var_export(strstr($string,' (ID:',true));
输出:(我使用var_export()
来表明该技术是“干净的”并且没有提供尾随空格)
'This is the value I would like removed.'
'This is the value I would like removed.'
有些观点:
\d
,则正则表达式模式不需要字符类。strstr()
是一个优雅/完美的函数。
之前写ID
(空格)以使输出干净。s
或i
修饰符,因为s
仅在您使用.
(点)和{{1}时才重要可能总是大写,所以你不需要不区分大小写的搜索。