如何在 PHP 中删除字符串的一部分?

如何删除部分字符串?

示例字符串: "REGISTER 11223344 here"

如何从上面的示例字符串中删除 "11223344"

516000 次浏览

假设11223344不是常数:

$string="REGISTER 11223344 here";
$s = explode(" ", $string);
unset($s[1]);
$s = implode(" ", $s);
print "$s\n";

如果你的目标是“11223344”,那么使用 str_replace:

// str_replace($search, $replace, $subject)
echo str_replace("11223344", "","REGISTER 11223344 here");

执行以下操作

$string = 'REGISTER 11223344 here';


$content = preg_replace('/REGISTER(.*)here/','',$string);

这会返回“注册在这里”

或者

$string = 'REGISTER 11223344 here';


$content = preg_replace('/REGISTER (.*) here/','',$string);

这会返回“注册在这里”

Subr ()是一个内置的 PHP 函数,它返回字符串的一部分。 函数 subr ()将接受一个字符串作为输入,您希望修剪字符串的索引形式,以及一个可选参数,即子字符串的长度。您可以在 翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳上看到适当的文档和示例代码。译注:

字符串的索引从0开始。

你可以使用 Str _ place (),它的定义是:

str_replace($search, $replace, $subject)

所以你可以这样写代码:

$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;

如果需要通过正则表达式进行更好的匹配,可以使用 Preg _ place ()

当需要基于规则的匹配时,需要使用正则表达式:

$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];

这将匹配第一组数字,所以如果你需要更具体的,尝试:

$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];

动态地,如果要从字符串的(a)固定索引(es)中删除(a)部分,请使用以下函数:

/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/
function removeFromString(string $string, $index, string $delimiter = " "): string
{
$stringParts = explode($delimiter, $string);


// Remove indexes from string parts
if (is_array($index)) {
foreach ($index as $i) {
unset($stringParts[(int)($i)]);
}
} else {
unset($stringParts[(int)($index)]);
}


// Join all parts together and return it
return implode($delimiter, $stringParts);
}

为了你的目的:

remove_from_str("REGISTER 11223344 here", 1); // Output: REGISTER here

它的用法之一是执行类似命令的字符串,您知道它们的结构。

str_replace(find, replace, string, count)
  • 必选项。指定 找到的值
  • 指定 更换的值为 找到中的值
  • 需要。指定 绳子搜索
  • 可选的。一个计算替换数量的变量

根据 OP 例子:

$Example_string = "REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344', '', $Example_string);


// will leave you with "REGISTER  here"


// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace('  ', ' ', $Example_string_PART_REMOVED));
// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces


// will leave you with "REGISTER here"

下面的代码片段将打印“ REGISTER here”

$string = "REGISTER 11223344 here";


$result = preg_replace(
array('/(\d+)/'),
array(''),
$string
);


print_r($result);

Preg _ place () API 的用法如下所示。

$result = preg_replace(
array('/pattern1/', '/pattern2/'),
array('replace1', 'replace2'),
$input_string
);