public function CollapseText::filterPrepareRegexCallback in Collapse Text 8
Same name and namespace in other branches
- 2.0.x src/Plugin/Filter/CollapseText.php \Drupal\collapse_text\Plugin\Filter\CollapseText::filterPrepareRegexCallback()
Callback function for the prepare replacement.
Attempt to clean up poorly formatted tags.
File
- src/
Plugin/ Filter/ CollapseText.php, line 143
Class
- CollapseText
- Provides a filter to display Collapsible text blocks.
Namespace
Drupal\collapse_text\Plugin\FilterCode
public function filterPrepareRegexCallback($matches) {
// All regexes here are running against an already extracted tag.
$tag = $matches[0];
// Allow the [collapsed] open tag.
$tag = preg_replace('/^ # start of tag
\\[ # open bracket
( # start capture
collapsed # the string collapsed
(?: |\\]) # either a space or a close bracket
) # end capture
/ix', '[collapse $1', $tag);
// Fix the collapsed element.
$tag = preg_replace('/^\\[collapse collapsed( |\\])/i', '[collapse collapsed="collapsed"$1', $tag);
// Fix the style element. going forward, we prefer "class=".
$tag = preg_replace('/ style=([^"].*?)(?= collapsed=| title=|\\])/i', ' class="$1"', $tag);
$tag = preg_replace('/ style="/i', ' class="', $tag);
// Fix the title element.
// Not sufficient if title includes double-quotes.
$tag = preg_replace('/ title=([^"].*?)(?= collapsed=| class=|\\])/i', ' title="$1"', $tag);
return $tag;
}