Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式对字符串进行除法_Php_Regex - Fatal编程技术网

Php 使用正则表达式对字符串进行除法

Php 使用正则表达式对字符串进行除法,php,regex,Php,Regex,我想像Wordpress标签一样拆分字符串。 唯一的区别是我的标签将包含当前页面的标题。 例如 我有以下代码: $str = 'lorem<!--title1-->ipsum<!--title2-->dolor<!--title3-->sit<!--title4-->amet<!--title5-->consectetur'; $res = preg_split('/<\!--(.*?)-->/', $str, null,

我想像Wordpress标签一样拆分字符串。 唯一的区别是我的标签将包含当前页面的标题。 例如

我有以下代码:

$str = 'lorem<!--title1-->ipsum<!--title2-->dolor<!--title3-->sit<!--title4-->amet<!--title5-->consectetur';
$res = preg_split('/<\!--(.*?)-->/', $str, null, PREG_SPLIT_DELIM_CAPTURE);
我的目标是:

Array
(
    [0] => Array
        (
            [0] => lorem
        )    
    [1] => Array
        (
            [0] => title1
            [1] => ipsum
        )    
    [2] => Array
        (
            [0] => title2
            [1] => dolor
        )    
    [3] => Array
        (
            [0] => title3
            [1] => sit
        )    
    [4] => Array
        (
            [0] => title4
            [1] => amet
        )    
    [5] => Array
        (
            [0] => title5
            [1] => consectetur
        )    
)

您可以将preg_match_all与以下正则表达式一起使用:

(?:<\!--(.*?)-->)?(.+?)(?=<!--|$)

最好将所有内容都放在问题中,而不是链接到可能消失的外部资源,从而使问题缺乏高质量的内容。所以我为你做了这件事就可以了,但如果我有字符串包含空格、制表符、换行符、点或任何其他特殊字符,这就不能很好地工作。我看到了\w的问题,不知道如何解决它。@user3054208:我用
(?:)([^]+)
更新了这个正则表达式,它将限制在
之外的部分。演示也更新了。@RiggsFolly:给你,我得吃完晚饭了:)我又发现了一个问题。字符串包含html标记时的情况。我试图否定第一组,但没有成功<代码>(?:)(?:(?!)。好吧,我猜这是
(?:)(+?)(=
(?:<\!--(.*?)-->)?(.+?)(?=<!--|$)
<?php
   $re = "/(?:<\\!--(.*?)-->)?(.+?)(?=<!--|$)/"; 
   $str = "lorem<!--title1-->ipsum<!--title2-->dolor<!--title3-->sit<!--title4-->amet<!--title5-->consectetur"; 
   preg_match_all($re, $str, $matches);
   $arr = array();
   $first = false;
   for ($i = 0; $i < count($matches[0]); $i++) {
       if ($first) {
          array_push($arr, array($matches[1][$i],$matches[2][$i] ));
        }
      else {
         $first = true;
         array_push($arr, array($matches[2][$i]));
      }
   }
   print_r($arr);
?>
Array                                                                                                                                                                
(                                                                                                                                                                    
    [0] => Array                                                                                                                                                     
        (                                                                                                                                                            
            [0] => lorem                                                                                                                                             
        )                                                                                                                                                            

    [1] => Array                                                                                                                                                     
        (                                                                                                                                                            
            [0] => title1                                                                                                                                            
            [1] => ipsum                                                                                                                                             
        )                                                                                                                                                            

    [2] => Array                                                                                                                                                     
        (                                                                                                                                                            
            [0] => title2                                                                                                                                            
            [1] => dolor                                                                                                                                             
        )                                                                                                                                                            

    [3] => Array                                                                                                                                                     
        (                                                                                                                                                            
            [0] => title3                                                                                                                                            
            [1] => sit                                                                                                                                               
        )                                                                                                                                                            

    [4] => Array                                                                                                                                                     
        (                                                                                                                                                            
            [0] => title4                                                                                                                                            
            [1] => amet                                                                                                                                              
        )                                                                                                                                                            

    [5] => Array                                                                                                                                                     
        (                                                                                                                                                            
            [0] => title5                                                                                                                                            
            [1] => consectetur                                                                                                                                       
        )                                                                                                                                                            
)