【问题标题】:How to get text between custom dynamic html tags without end tags如何在没有结束标签的自定义动态 html 标签之间获取文本
【发布时间】:2018-08-25 18:15:58
【问题描述】:

我有由多个自定义标签分隔的文本,这些标签具有部分动态名称且没有结束标签。

我需要的是获取文本的所有单独部分自定义标签之间,包括标签。

对于文本的最后一部分,我只能在标签之后获取文本,因为它没有结束标签。

我见过很多类似的问题,但我发现它们不足以解决我的问题。

例子:

<*fixedTagName|Dynamic part of tag name> // * and | are included in fixed part of tag name
                                   //dynamic part can have spaces between words

  Random text I need to get of unknown length

  some paragraphs of text can start like this(look bellow)

  » name: value
  » name: value

<*fixedTagName|Dynamic part of tag>

  More random text I need to get

<*fixedTagName|Dynamic part of tag>

  Final part of random text I need to get

【问题讨论】:

    标签: php html regex parsing


    【解决方案1】:

    要获取正则表达式匹配之间的文本,您可以使用 preg_split 函数:

    $result = preg_split('/<\*[^|]+\|[^>]+>/', $input);
    

    在这个正则表达式中:

    • &lt;\* 匹配 &lt;*;
    • [^|]+ 匹配除 | 之外的任何符号 1..* 次;
    • \| 匹配 |;
    • [^&gt;]+ 匹配除 &gt; 之外的任何符号 1..* 次;
    • &gt; 匹配 &gt;

    有了这个输入:

    $input = <<<EOL
    <*fixedTagName|Dynamic part of tag name> // * and | are included in fixed part of tag name
                                       //dynamic part can have spaces between words
    
      Random text I need to get of unknown length
    
      some paragraphs of text can start like this(look bellow)
    
      » name: value
      » name: value
    
    <*fixedTagName|Dynamic part of tag>
    
      More random text I need to get
    
    <*fixedTagName|Dynamic part of tag>
    
      Final part of random text I need to get
    EOL;
    

    $result 将是一个类似这样的字符串数组:

    Array
    (
        [0] => 
        [1] =>  // * and | are included in fixed part of tag name
                                       //dynamic part can have spaces between words
    
      Random text I need to get of unknown length
    
      some paragraphs of text can start like this(look bellow)
    
      » name: value
      » name: value
    
    
        [2] => 
    
      More random text I need to get
    
    
        [3] => 
    
      Final part of random text I need to get
    )
    

    【讨论】:

    • 非常感谢!这必须是迄今为止我收到的关于 SO 的最佳答案,它不仅提供了解决方案,还提供了示例解释。我很高兴地赞成并接受了这个答案。感谢您的时间和精力!
    【解决方案2】:

    我认为这个 StackOverflow 答案完全解释了您如何做到这一点:https://stackoverflow.com/a/3577662/7578179

    【讨论】:

    • 列出我可以使用的工具!== 充分解释如何做到这一点。我之前知道我可以使用正则表达式和/或解析器之类的东西,但是这个问题有些独特且非常复杂,目前可能超出了我的范围,所以我希望有更具体的东西。
    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    相关资源
    最近更新 更多