使用PHP内置的ltrim()删除单个字符

使用PHP内置的ltrim()删除单个字符,php,string,function,built-in,Php,String,Function,Built In,是否有一种简单的方法可以使用ltrim()删除单个匹配实例而不是所有匹配 我在字符串数组中循环,我想删除第一个匹配项,并且只删除第一个匹配项(本例中为元音): 使用默认行为,字符串aardvark或aardvark将被修剪为“rdvark”。我希望结果是“ardvark” 我没有以任何方式绑定到ltrim,但它似乎是最接近的内置PHP函数。如果ltrim和rtrim有一个可选参数“limit”,那就太好了,只是说…:) 由于您所说的原因,您不能使用ltrim来执行此操作,也不能使用str\u r

是否有一种简单的方法可以使用
ltrim()
删除单个匹配实例而不是所有匹配

我在字符串数组中循环,我想删除第一个匹配项,并且只删除第一个匹配项(本例中为元音):

使用默认行为,字符串
aardvark
aardvark
将被修剪为
“rdvark”
。我希望结果是
“ardvark”


我没有以任何方式绑定到ltrim,但它似乎是最接近的内置PHP函数。如果
ltrim
rtrim
有一个可选参数“limit”,那就太好了,只是说…:)

由于您所说的原因,您不能使用
ltrim
来执行此操作,也不能使用
str\u replace
(这也没有限制)。我认为使用正则表达式最简单:

$value = preg_replace('/^[aeiouy]/i', '', $value);

但是,如果您真的不想这样做,可以使用子字符串,但您必须检查循环中字符串中任何字符串的位置,因为据我所知,没有php函数执行这种检查。

您可以使用
preg\u replace
函数:

<?php
    $value = preg_replace('/^[aeiouy]/i', '', $value);
?>

正则表达式可能有些过分,但是:

$value = preg_replace('/^[aeiouy]/i', '', $value);

注意,
i
使其不区分大小写。

只需使用preg replace,它有一个限制选项

乙二醇


有几种方法可以让你做你想做的事情

也许最简单的方法是如下所示的正则表达式替换:

$pattern = '/^[aeiouy]{1}/i';
$result = preg_replace($pattern, '', $original_string);

这可能是最有效的方法(因此忽略我的正则表达式):

或者


aaezz结果应该是aezz还是aeezz?@delnan谢谢你的提醒。我已经删除了它。我更喜欢正则表达式版本。+1。我怀疑这个比正则表达式快。Benchmark,有人吗?@Geo正则表达式的版本始终慢20%左右,但两个版本的100万次操作只需要大约一秒钟,因此在这种情况下不太可能有速度优势。我认为这实际上比
{1}
好。要分析的内容更少。是否可以对第二个参数中的双引号进行向下投票?谢谢,我对如何删除第一个字符没有限制。我对PHP只是个新手,对所有函数还不够熟悉。preg_replace工作得很好。
$value = preg_replace('/^[aeiouy]/i', '', $value, 1); 
$pattern = '/^[aeiouy]{1}/i';
$result = preg_replace($pattern, '', $original_string);
if (strpos('aeiouyAEIOUY', $value[0]) !== false) $value = substr($value, 1);
if (stripos('aeiouy', $value[0]) !== false) $value = substr($value, 1);