Php 修剪整个字符串,而不是使用带有字符的Trim()

Php 修剪整个字符串,而不是使用带有字符的Trim(),php,regex,Php,Regex,在数据字符串中使用特定分隔符时,我通常希望在分解之前删除它的最后一个实例 我一直在想: PHPtrim()将删除空白或某些字符。但如果我想修剪整根弦,比如: $data = 'cookieDELIMITERchocolateDELIMITER'; $data = trim($data, 'DELIMITER'); 上面的方法不会真正起作用,因为它不会修剪字符串“DELIMITER”,而是修剪字符“D、E、L、I、M、t、R” 我想要的是: $data = 'cookieDELIMITERcho

在数据字符串中使用特定分隔符时,我通常希望在分解之前删除它的最后一个实例

我一直在想:

PHP
trim()
将删除空白或某些字符。但如果我想修剪整根弦,比如:

$data = 'cookieDELIMITERchocolateDELIMITER';
$data = trim($data, 'DELIMITER');
上面的方法不会真正起作用,因为它不会修剪字符串“DELIMITER”,而是修剪字符“D、E、L、I、M、t、R”

我想要的是:

$data = 'cookieDELIMITERchocolate';
谢谢你的建议

$data = 'cookieDELIMITERchocolateDELIMITER';
$data = preg_replace('/^(DELIMITER)*|(DELIMITER)*$/', '', $data);

var_dump($data);
// string(24) "cookieDELIMITERchocolate"
正则表达式将在字符串的开头(
^
)或结尾(
|
)匹配“DELIMITER”的0+(
*
)实例。将获取这些匹配项并用空字符串替换它们


完整正则表达式解释

^                # Matches the start of the string
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
|                # OR
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
$                # Matches the end of the string
这意味着它将在字符串的开头或结尾匹配多个分隔符。由于
preg_replace()
进行全局匹配/替换,因此只要将所有出现的分隔符附加到字符串的开头或结尾,它就会获取所有出现的分隔符

添加点(
^(分隔符)。*|(分隔符)*$
)将匹配字符串的开头,后跟分隔符,后跟任何字符的0+(
匹配所有字符)。如果它以
分隔符开始,这将非常有效

正则表达式将在字符串的开头(
^
)或结尾(
|
)匹配“DELIMITER”的0+(
*
)实例。将获取这些匹配项并用空字符串替换它们


完整正则表达式解释

^                # Matches the start of the string
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
|                # OR
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
$                # Matches the end of the string
这意味着它将在字符串的开头或结尾匹配多个分隔符。由于
preg_replace()
进行全局匹配/替换,因此只要将所有出现的分隔符附加到字符串的开头或结尾,它就会获取所有出现的分隔符

添加点(
^(分隔符)。*|(分隔符)*$
)将匹配字符串的开头,后跟分隔符,后跟任何字符的0+(
匹配所有字符)。如果它以
分隔符开始,这将非常有效

正则表达式将在字符串的开头(
^
)或结尾(
|
)匹配“DELIMITER”的0+(
*
)实例。将获取这些匹配项并用空字符串替换它们


完整正则表达式解释

^                # Matches the start of the string
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
|                # OR
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
$                # Matches the end of the string
这意味着它将在字符串的开头或结尾匹配多个分隔符。由于
preg_replace()
进行全局匹配/替换,因此只要将所有出现的分隔符附加到字符串的开头或结尾,它就会获取所有出现的分隔符

添加点(
^(分隔符)。*|(分隔符)*$
)将匹配字符串的开头,后跟分隔符,后跟任何字符的0+(
匹配所有字符)。如果它以
分隔符开始,这将非常有效

正则表达式将在字符串的开头(
^
)或结尾(
|
)匹配“DELIMITER”的0+(
*
)实例。将获取这些匹配项并用空字符串替换它们


完整正则表达式解释

^                # Matches the start of the string
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
|                # OR
  (DELIMITER)*   # Matches "DELIMITER" 0+ times, thanks to the *
$                # Matches the end of the string
这意味着它将在字符串的开头或结尾匹配多个分隔符。由于
preg_replace()
进行全局匹配/替换,因此只要将所有出现的分隔符附加到字符串的开头或结尾,它就会获取所有出现的分隔符


添加点(
^(分隔符)。*|(分隔符)*$
)将匹配字符串的开头,后跟分隔符,后跟任何字符的0+(
匹配所有字符)。如果以
分隔符开始,这将非常有效。如果使用此分隔符来防止
分解()后出现空数组元素,请尝试以下操作:

$array = array_filter(explode('DELIMITER', $data))

如果使用此选项是为了防止在
explode()
之后出现空数组元素,请尝试以下操作:

$array = array_filter(explode('DELIMITER', $data))

如果使用此选项是为了防止在
explode()
之后出现空数组元素,请尝试以下操作:

$array = array_filter(explode('DELIMITER', $data))

如果使用此选项是为了防止在
explode()
之后出现空数组元素,请尝试以下操作:

$array = array_filter(explode('DELIMITER', $data))

听起来不错,加上点,对吗<代码>^(分隔符)。*|(分隔符)*$
听起来不错,只需添加点,对吗<代码>^(分隔符)。*|(分隔符)*$
听起来不错,只需添加点,对吗<代码>^(分隔符)。*|(分隔符)*$
听起来不错,只需添加点,对吗
^(定界符)。*|(定界符)*$
这也是一个很好的解决方案。@Chris-这将删除所有的
定界符
文本,而不仅仅是字符串末尾的任何文本。@JaredFarrish:是的,如果你读了问题,他们想在分解定界符之前删除最后一个定界符。所以我将它们结合起来。这也是一个很好的解决方案。@Chris-这将删除所有的
分隔符
文本,而不仅仅是字符串末尾的任何文本。@JaredFarrish:是的,如果你读了问题,他们想在分解分隔符之前删除最后一个分隔符。所以我将它们结合起来。这也是一个很好的解决方案。@Chris-这将删除所有的
分隔符
文本,而不仅仅是字符串末尾的任何文本。@JaredFarrish:是的,如果你读了问题,他们想在分解分隔符之前删除最后一个分隔符。所以我将它们结合起来。这也是一个很好的解决方案。@Chris-这将删除所有的
分隔符
文本,而不仅仅是字符串末尾的任何文本。@JaredFarrish:是的,如果你读了问题,他们想在分解分隔符之前删除最后一个分隔符。所以我把它们结合起来。