Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vstelmakh/url-highlight
PHP library to parse URLs from string input
https://github.com/vstelmakh/url-highlight
clickable highlighter html linkify parse-urls parser php url url-highlight
Last synced: about 24 hours ago
JSON representation
PHP library to parse URLs from string input
- Host: GitHub
- URL: https://github.com/vstelmakh/url-highlight
- Owner: vstelmakh
- License: mit
- Created: 2019-12-22T19:41:57.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-17T21:25:07.000Z (2 months ago)
- Last Synced: 2024-10-20T08:10:03.382Z (2 months ago)
- Topics: clickable, highlighter, html, linkify, parse-urls, parser, php, url, url-highlight
- Language: PHP
- Homepage:
- Size: 283 KB
- Stars: 93
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
---
[![Build status](https://github.com/vstelmakh/url-highlight/workflows/build/badge.svg?branch=master)](https://github.com/vstelmakh/url-highlight/actions)
[![Packagist version](https://img.shields.io/packagist/v/vstelmakh/url-highlight?color=orange)](https://packagist.org/packages/vstelmakh/url-highlight)
[![PHP version](https://img.shields.io/packagist/php-v/vstelmakh/url-highlight)](https://www.php.net/)
[![License](https://img.shields.io/github/license/vstelmakh/url-highlight?color=yellowgreen)](LICENSE)**Url highlight** - PHP library to parse URLs from string input. Works with complex URLs, edge cases and encoded input.
Features:
- Replace URLs in string by HTML tags (make clickable)
- Match URLs without scheme by top-level domain
- Work with HTML entities encoded input
- Extract URLs from string
- Check if string is URL[🚀 **See examples** 👀](./docs/examples.md)
## Installation
Install the latest version with [Composer](https://getcomposer.org/):
```bash
composer require vstelmakh/url-highlight
```
Also, there are
[ Twig extension](https://github.com/vstelmakh/url-highlight-twig-extension)
and [ Symfony bundle](https://github.com/vstelmakh/url-highlight-symfony-bundle) available.## Quick start
```php
highlightUrls('Hello, http://example.com.');// Output:
// Hello, http://example.com.
```> 💡 **Tip**: For customizing highlight see [Highlighter](#highlighter).
> To properly handle HTML entity escaped string see [Encoder](#encoder).## Usage
#### Check if string is URL
```php
isUrl('http://example.com'); // return: true
$urlHighlight->isUrl('Other string'); // return: false
```#### Parse URLs from string
```php
getUrls('Hello, http://example.com.');
// return: ['http://example.com']
```#### Replace URLs by HTML tags (make clickable)
```php
highlightUrls('Hello, http://example.com.');
// return: 'Hello, http://example.com.'
```## Configuration
There are 3 parts which could be configured according to your needs:
- [Validator](#validator) - define if match is valid and should be recognized as URL (e.g. allow/disallow specific schemes)
- [Highlighter](#highlighter) - define the way how URL should be highlighted (e.g. replaced by html `` tag)
- [Encoder](#encoder) - define how to work with encoded input (e.g. html special chars)Configuration provided via constructor implementing corresponding interface instance.
Use `null` to keep default:
```php🛠️ Validator usage example
```php> 💡 **Tip**: If you need custom behavior - create and use your own validator implementing [ValidatorInterface](./src/Validator/ValidatorInterface.php).
### Highlighter
There are 2 highlighters bundled with the library:
- [HtmlHighlighter](./src/Highlighter/HtmlHighlighter.php) - convert matches to html tags.
Example: `http://example.com` → `http://example.com`
- [MarkdownHighlighter](./src/Highlighter/MarkdownHighlighter.php) - convert matches to markdown format.
Example: `http://example.com` → `[http://example.com](http://example.com)`By default, `HtmlHighlighter` is used, with settings listed in example below.
🛠️ Highlighter usage example
```php
'nofollow', 'class' => 'light']
'', // string - content to add before highlight: {here}{here}
);
$urlHighlight = new UrlHighlight(null, $highlighter);
```> 💡 **Tip**: If you need custom behavior - extend [HtmlHighlighter](./src/Highlighter/HtmlHighlighter.php) or implement [HighlighterInterface](./src/Highlighter/HighlighterInterface.php).
> For more details and examples see [🖍️ Custom highlighter](./docs/highlighter-custom.md).### Encoder
Encoder should be used to handle encoded input properly. For example HTML escaped string could contain something
like: `http://example.com?a=1"` or `http://example.com?a=1&b=2` which will be wrongly matched as URL.By default, there is no encoder used. There are 2 encoders bundled with library:
- [HtmlEntitiesEncoder](./src/Encoder/HtmlEntitiesEncoder.php) - to work with HTML entities encoded string (any character expected to be HTML entity encoded)
- [HtmlSpecialcharsEncoder](./src/Encoder/HtmlSpecialcharsEncoder.php) - to work with HTML escaped string (only `&` `"` `'` `<` `>` expected to be encoded)🛠️ Encoder usage example
```php
highlightUrls('<a href="http://example.com">Example</a>');
// return: '<a href="http://example.com">Example</a>'
```> 💡 **Tip**: For custom behavior - create and use your own encoder implementing [EncoderInterface](./src/Encoder/EncoderInterface.php).
> Keep in mind - using **encoder require more regex operations and could have performance impact**.
> Better to not use encoder if you don't expect encoded string.## Credits
[Volodymyr Stelmakh](https://github.com/vstelmakh)
Licensed under the MIT License. See [LICENSE](LICENSE) for more information.