User login

Regular expressions: great when they work!

Wow, it's great when regular expressions work (even if you're fumbling in the dark with them...)

Traversing through an angle-bracket delimited term set (term hierarchy path).

Input:

this > is > a > term > list

Code:

    $regexp = '%(?:^|>\ *)("(?>[^"]*)(?>""[^"]* )*"|(?: [^">]*))%x';
    preg_match_all($regexp, $typed_termset, $term_matches);
    $typed_terms = array_unique($term_matches[1]);

Result:

Array
(
    [0] => this
    [1] => is
    [2] => a
    [3] => term
    [4] => list
)

Further review of this expression to be sure it works as intended would certainly be appreciated.

Working as intended means splitting terms into a hierarchical path on angle brackets, >, after the split-on-commas regexp lifted straight from taxonomy.module has already done its work.

Wow, it's great when regular expressions work (even if you're fumbling in the dark with them...)

Traversing through an angle-bracket delimited term set (term hierarchy path).

Input:

this > is > a > term > list

Code:

    $regexp = '%(?:^|>\ *)("(?>[^"]*)(?>""[^"]* )*"|(?: [^">]*))%x';
    preg_match_all($regexp, $typed_termset, $term_matches);
    $typed_terms = array_unique($term_matches[1]);

Result:

Array
(
    [0] => this
    [1] => is
    [2] => a
    [3] => term
    [4] => list
)

Further review of this expression to be sure it works as intended would certainly be appreciated.

Working as intended means splitting terms into a hierarchical path on angle brackets, >, after the split-on-commas regexp lifted straight from taxonomy.module has already done its work.

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote> <small> <h2> <h3> <h4> <h5> <h6> <sub> <sup> <p> <br> <strike> <table> <tr> <td> <thead> <th> <tbody> <tt> <output>
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.