Table of contents
In this post, I'm sharing how to extract a keyword or shortcode that starts and ends with specific characters. In my current project with Laravel, I'm building an email template module that has a shortcode. And after created and viewing it I want to extract the added shortcodes for the template and show it to the user. So I came up with this code since I tried to search on google I cannot find the same problem so I coded the class below to cater to what I need.
Â
<?php
/**
* Coded by: Ronard Cauba
*/
class ShortcodeExtractor
{
/**
* @var $opening
*/
private $start = "{";
/**
* @var $closing
*/
private $end = "}";
public function extract($content, $result=[])
{
$startPos = strpos($content, $this->start);
$endPos = strpos($content, $this->end);
$out = "";
if($startPos > 0 && $endPos > 0) {
$out = substr($content, $startPos, ($endPos - $startPos) + 1);
$result[] = $out;
$latestContent = str_replace($out, "", $content);
return $this->extract(str_replace($out, "", $content), $result);
}
return $result;
}
}
$content = "The {first_name} quick brown {last_name} fox jumps over the lazy dog {email}.";
$result = (new ShortcodeExtractor)->extract($content);
print_r($result);
//result
Array
(
[0] => {first_name}
[1] => {last_name}
[2] => {email}
)
Â
Feel free to use or modify.
Â
I hope it helps. Thank you for reading.
Â
Happy coding :)
Read next