Skip to content

Commit

Permalink
return null in before, after, beforeLast and afterLast when search it…
Browse files Browse the repository at this point in the history
…em is not in the subject
  • Loading branch information
donyatorabi committed Jun 29, 2024
1 parent 032f378 commit 12a4b4f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
15 changes: 11 additions & 4 deletions src/Illuminate/Support/Str.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,14 @@ public static function of($string)
*/
public static function after($subject, $search)
{
return $search === '' ? $subject : array_reverse(explode($search, $subject, 2))[0];
if ($search === '') {
return $subject;
}

$explodedSubject = explode($search, $subject, 2);

// if it was exploded in less than one part so search string was not found in it
return count($explodedSubject) > 1 ? array_reverse($explodedSubject)[0] : '';
}

/**
Expand All @@ -104,7 +111,7 @@ public static function afterLast($subject, $search)
$position = strrpos($subject, (string) $search);

if ($position === false) {
return $subject;
return '';
}

return substr($subject, $position + strlen($search));
Expand Down Expand Up @@ -150,7 +157,7 @@ public static function before($subject, $search)

$result = strstr($subject, (string) $search, true);

return $result === false ? $subject : $result;
return $result === false ? '' : $result;
}

/**
Expand All @@ -169,7 +176,7 @@ public static function beforeLast($subject, $search)
$pos = mb_strrpos($subject, $search);

if ($pos === false) {
return $subject;
return '';
}

return static::substr($subject, 0, $pos);
Expand Down
8 changes: 4 additions & 4 deletions tests/Support/SupportStrTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ public function testStrBefore(): void
$this->assertSame('han', Str::before('hannah', 'nah'));
$this->assertSame('ha', Str::before('hannah', 'n'));
$this->assertSame('ééé ', Str::before('ééé hannah', 'han'));
$this->assertSame('hannah', Str::before('hannah', 'xxxx'));
$this->assertSame('', Str::before('hannah', 'xxxx'));
$this->assertSame('hannah', Str::before('hannah', ''));
$this->assertSame('han', Str::before('han0nah', '0'));
$this->assertSame('han', Str::before('han0nah', 0));
Expand All @@ -295,7 +295,7 @@ public function testStrBeforeLast(): void
$this->assertSame('yvet', Str::beforeLast('yvette', 't'));
$this->assertSame('ééé ', Str::beforeLast('ééé yvette', 'yve'));
$this->assertSame('', Str::beforeLast('yvette', 'yve'));
$this->assertSame('yvette', Str::beforeLast('yvette', 'xxxx'));
$this->assertSame('', Str::beforeLast('yvette', 'xxxx'));
$this->assertSame('yvette', Str::beforeLast('yvette', ''));
$this->assertSame('yv0et', Str::beforeLast('yv0et0te', '0'));
$this->assertSame('yv0et', Str::beforeLast('yv0et0te', 0));
Expand Down Expand Up @@ -344,7 +344,7 @@ public function testStrAfter()
$this->assertSame('nah', Str::after('hannah', 'han'));
$this->assertSame('nah', Str::after('hannah', 'n'));
$this->assertSame('nah', Str::after('ééé hannah', 'han'));
$this->assertSame('hannah', Str::after('hannah', 'xxxx'));
$this->assertSame('', Str::after('hannah', 'xxxx'));
$this->assertSame('hannah', Str::after('hannah', ''));
$this->assertSame('nah', Str::after('han0nah', '0'));
$this->assertSame('nah', Str::after('han0nah', 0));
Expand All @@ -357,7 +357,7 @@ public function testStrAfterLast()
$this->assertSame('e', Str::afterLast('yvette', 't'));
$this->assertSame('e', Str::afterLast('ééé yvette', 't'));
$this->assertSame('', Str::afterLast('yvette', 'tte'));
$this->assertSame('yvette', Str::afterLast('yvette', 'xxxx'));
$this->assertSame('', Str::afterLast('yvette', 'xxxx'));
$this->assertSame('yvette', Str::afterLast('yvette', ''));
$this->assertSame('te', Str::afterLast('yv0et0te', '0'));
$this->assertSame('te', Str::afterLast('yv0et0te', 0));
Expand Down

0 comments on commit 12a4b4f

Please sign in to comment.