Plugin Directory

Changeset 3162632


Ignore:
Timestamp:
10/04/2024 10:01:23 AM (18 months ago)
Author:
bitspecter
Message:

update regex for adding nbsp

Location:
pevne-mezery/trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • pevne-mezery/trunk/includes/class-content-handler.php

    r3162288 r3162632  
    1313    public static function process_content(string $content): string
    1414    {
    15         // First, apply simple replacements using str_replace for better performance
    16         $content = self::apply_simple_replacements($content);
    17 
    18         // Then, apply more complex replacements using regular expressions
    1915        foreach (self::get_regex_rules() as $pattern => $replacement) {
    2016            $content = preg_replace($pattern, $replacement, $content);
     
    2218
    2319        return $content;
    24     }
    25 
    26     /**
    27      * Applies simple replacements using str_replace where applicable.
    28      *
    29      * @param string $content The content to process.
    30      * @return string The processed content with simple replacements applied.
    31      */
    32     private static function apply_simple_replacements(string $content): string
    33     {
    34         // Use str_replace for abbreviations, titles and fixed phrases
    35         $search = [
    36             'Bc.',
    37             'Mgr.',
    38             'Ing.',
    39             'Ph.D.',
    40             'LL.B.',
    41             'MUDr.',
    42             'JUDr.',
    43             'prof.',
    44             'voj.',
    45             'čet.',
    46             'rtm.',
    47             'por.',
    48             'kpt.',
    49             'plk.',
    50             'gen.',
    51             'Dr.',
    52             'doc.',
    53             'cca.',
    54             'č.',
    55             'čís.',
    56             'čj.',
    57             'čp.',
    58             'fa',
    59             'fě',
    60             'fy',
    61             'kupř.',
    62             'mj.',
    63             'např.',
    64             'p.',
    65             'pí',
    66             'popř.',
    67             'př.',
    68             'přib.',
    69             'přibl.',
    70             'sl.',
    71             'str.',
    72             'sv.',
    73             'tj.',
    74             'tzn.',
    75             'tzv.',
    76             'zvl.'
    77         ];
    78 
    79         $replace = array_map(fn($abbr) => str_replace('.', '. ', $abbr), $search);
    80 
    81         // Additional replacements for dashes
    82         $search = array_merge($search, [' - ', ' – ', ' — ']);
    83         $replace = array_merge($replace, [' - ', ' – ', ' — ']);
    84 
    85         return str_replace($search, $replace, $content);
    8620    }
    8721
     
    9630        // Using combined regex for similar rules and more efficient replacements
    9731        return [
     32            // Math expressions with non-breakable spaces
     33            '/(\d)\s+([+\-*\/=])\s+(\d)/u' => '$1 $2 $3',
     34
    9835            // Single-character prepositions and conjunctions
    9936            '/\b(k|s|v|z|o|u|a|i)\s+/iu' => '$1 ',
    10037
    101             // Mathematical operators
    102             '/(\d+)\s*(\+|\-|×|÷|=|≠|≈|<|>|≤|≥|~)\s*(\d+)/u' => '$1&nbsp;$2&nbsp;$3',
     38            // Units of measurement
     39            '/(\d+)\s+(h|min|s|ms|m|m²|km|cm|mm|ha|km²|MB|GB|m\/s|km\/h|°|°C|°F|Kč|€|\$|%|dní|lidí)/u' => '$1&nbsp;$2',
    10340
    104             // Units of measurement
    105             '/(\d+)\s*(h|min|s|ms|m|km|cm|mm|ha|km²|MB|GB|m\/s|km\/h|°|°C|°F|Kč|€|\$|%)/u' => '$1&nbsp;$2',
     41            // Czech abbreviations 
     42            '/\b(Bc|Mgr|Ing|Ph\.D|LL\.B|MUDr|JUDr|prof|voj|čet|rtm|por|kpt|plk|gen|Dr|doc|cca|č|čís|čj|čp|fa|fě|fy|kupř|mj|např|p|pí|popř|př|přib|přibl|sl|str|sv|tj|tzn|tzv|zvl)\.\s+/u' => '$1.&nbsp;',
    10643
    107             // Special symbols
    108             '/(§|\*|†|‡|©|®|℗|‰|™|℠|–|—|→|←|↑|↓|€|£|\$|¥|¢|°|±|∞|≠|≤|≥|∑|∏|√|≈|∂|Ω|µ)\s+/u' => '$1&nbsp;',
     44            // Space after ordered number
     45            '/(\d+\.)\s+([0-9a-záčďéěíňóřšťúýž])/u' => '$1&nbsp;$2', // After ordinal numbers
    10946        ];
    11047    }
  • pevne-mezery/trunk/pevne-mezery.php

    r3162288 r3162632  
    33Plugin Name: Pevné mezery
    44Description: Plugin pro automatické doplnění pevných mezer podle českých typografických pravidel. Podpora WooCommerce a ACF.
    5 Version: 1.0.0
     5Version: 1.1.0
    66Requires PHP: 8.0
    77Author: BitSpecter
Note: See TracChangeset for help on using the changeset viewer.