如果不存在,则在字符串的开头添加子字符串(php)

时间:2019-06-20 16:21:25

标签: php string substring

仅当此字符串开头没有该文本时,我才想在该字符串开头添加子字符串(文本)。

我对最快的解决方案感兴趣。

示例:

// let's say I want to add "Has" at beginning (if doesn't exist)

$string_1 = "AnaHasSomeApples"; // we need to add
$string_1 = "HsSomeApples"; // we need to add
$string_2 = "HasApplesAlready"; // already exists at the beginning

我尝试过:

$string = (strpos($string, 'Has') === false ? 'Has' : '') . $string;

我知道这样做并不难。但是我想要最快的方法(根据时间,而不是代码行)。 谢谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试这种方式-检查前3个字符是否等于“ Has”,如果已经匹配,则只需使用$ string_1否则将“ Has”连接起来。

$string_1 = (substr( $string_1 , 0, 3 ) !== "Has") ? "Has".$string_1 : $string_1;
echo $string_1;

如果您希望“有”不区分大小写,则可以在使用条件检查时使用strtolower

演示: https://3v4l.org/QEr1l

答案 1 :(得分:0)

我正在检查Has是否不在位置0处,然后在现有字符串前加上“ Has”
您可以使用三元运算符来实现这一点,

$string_1 = "AnaHasSomeApples"; // we need to add
$string_2 = "HsSomeApples"; // we need to add
$string_3 = "HasApplesAlready"; // already exists at the beginning

echo "string_1: ". (strpos($string_1,"Has") !== 0 ? "Has".$string_1: $string_1)."\n";
echo "string_2: ". (strpos($string_2,"Has") !== 0 ? "Has".$string_2: $string_2)."\n";
echo "string_3: ". (strpos($string_3,"Has") !== 0 ? "Has".$string_3: $string_3)."\n";

输出

string_1: HasAnaHasSomeApples
string_2: HasHsSomeApples
string_3: HasApplesAlready

Demo

答案 2 :(得分:0)

您可能会喜欢这个解决方案:

首先从主字符串中修剪您想要的字符串以确保该字符串不存在于主字符串的开头,然后尝试在原始字符串的开头添加您想要的字符串。

$string = 'HasSomeApples';

$result = 'Has' . ltrim($string, 'Has');