mirror of
https://github.com/koel/koel
synced 2024-12-30 06:23:05 +00:00
29 lines
831 B
PHP
29 lines
831 B
PHP
|
<?php
|
||
|
|
||
|
namespace App\Casts;
|
||
|
|
||
|
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
||
|
use Illuminate\Database\Eloquent\Model;
|
||
|
|
||
|
class SongLyricsCast implements CastsAttributes
|
||
|
{
|
||
|
/** @param string|null $value */
|
||
|
public function get(Model $model, string $key, mixed $value, array $attributes): string
|
||
|
{
|
||
|
if (!$value) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
// Since we're displaying the lyrics using <pre>, replace breaks with newlines and strip all tags.
|
||
|
$value = strip_tags(preg_replace('#<br\s*/?>#i', PHP_EOL, $value));
|
||
|
|
||
|
// also remove the timestamps that often come with LRC files
|
||
|
return preg_replace('/\[\d{2}:\d{2}.\d{2}]\s*/m', '', $value);
|
||
|
}
|
||
|
|
||
|
public function set(Model $model, string $key, mixed $value, array $attributes): mixed
|
||
|
{
|
||
|
return $value;
|
||
|
}
|
||
|
}
|