mirror of
https://github.com/YGGverse/gemini-php.git
synced 2025-03-13 06:01:58 +00:00
implement skipTags method
This commit is contained in:
parent
9ec48ba944
commit
75685f3737
19
README.md
19
README.md
@ -96,6 +96,25 @@ var_dump(
|
||||
);
|
||||
```
|
||||
|
||||
#### Body::skipTags
|
||||
|
||||
Strip gemini tags from Gemini document
|
||||
|
||||
```
|
||||
var_dump(
|
||||
$body->skipTags() // strip all tags
|
||||
);
|
||||
|
||||
var_dump(
|
||||
$body->skipTags(
|
||||
[ // 1- and 2- level headers only
|
||||
"##",
|
||||
"###"
|
||||
]
|
||||
)
|
||||
);
|
||||
```
|
||||
|
||||
### Link
|
||||
|
||||
Inline links parser.
|
||||
|
@ -105,4 +105,89 @@ class Body
|
||||
|
||||
return $matches;
|
||||
}
|
||||
|
||||
public function skipTags(array $tags = []): string
|
||||
{
|
||||
$lines = [];
|
||||
|
||||
foreach ($this->_lines as $line)
|
||||
{
|
||||
$line = trim(
|
||||
$line
|
||||
);
|
||||
|
||||
if ($tags)
|
||||
{
|
||||
foreach ($tags as $tag)
|
||||
{
|
||||
if(!in_array($tag, ['#', '##', '###', '=>', '*', '```']))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (true)
|
||||
{
|
||||
case str_starts_with($line, '#'):
|
||||
|
||||
$line = preg_replace(
|
||||
sprintf(
|
||||
'/^%s([^#]+)/ui',
|
||||
$tag
|
||||
),
|
||||
'$1',
|
||||
$line
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
case str_starts_with($line, '*'):
|
||||
|
||||
$line = preg_replace(
|
||||
'/^\*(.*)/ui',
|
||||
'$1',
|
||||
$line
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
$line = preg_replace(
|
||||
sprintf(
|
||||
'/^%s(.*)/ui',
|
||||
$tag
|
||||
),
|
||||
'$1',
|
||||
$line
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$line = preg_replace(
|
||||
[
|
||||
'/^#([^#]+)/ui',
|
||||
'/^##([^#]+)/ui',
|
||||
'/^###([^#]+)/ui',
|
||||
'/^=>(.*)/ui',
|
||||
'/^\*(.*)/ui',
|
||||
'/^```(.*)/ui',
|
||||
],
|
||||
'$1',
|
||||
$line
|
||||
);
|
||||
}
|
||||
|
||||
$lines[] = trim(
|
||||
$line
|
||||
);
|
||||
}
|
||||
|
||||
return implode(
|
||||
PHP_EOL,
|
||||
$lines
|
||||
);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user