PHP preg_match前面有或没有字母?

时间:2016-11-21 18:06:42

标签: php

嗨,我现在有这个:

$linkOcc = substr_count($text3, "**link(");
        if($linkOcc < '1'){
            $text4 = $text3;

        }


        for ($i2=0; $i2 < $linkOcc; $i2++) { 
            if($i2=='0'){
                preg_match('/(?<=\*\*link)\((.*)\)/', $text3, $match2);
                $linkTitle = ($match2[1]);
                $linkTitle = str_replace("/","",$linkTitle);
            }
        } 

它会检测段落中是否有一段文字可以识别以下内容:

**link(exampletext)**

然后用其他东西替换它。如果

两侧都有空格,这种方法很有用
**link(examplesite)**

但是,让我说我有以下段落:

So then Bob went to this**link(examplesite)**and he found a cool picture.

然后由于某种原因代码dosnt将其识别为**链接...我很确定它是因为**链接的两边都没有空格...所以我该如何解决这个?要检测**链接...并且AND侧面没有空格?

1 个答案:

答案 0 :(得分:0)

如果您只想匹配括号内的文字:

**link(this text)**

然后你的正则表达式必须是:

\*\*link\((.*)\)\*\*

您只是捕捉任何文字 - &gt; (。*)
在括号内 - &gt; \(\)

要测试正则表达式,您可以访问: https://regex101.com/并在**链接(某些文本)之后或之前使用或不使用空格进行测试**

重要说明: 由于您只有一个捕获组,因此匹配将位于匹配数组的第一个元素上:matches [0]

如果你想要匹配的内容,你需要使用$ match2 [0]而不是$ match2 [1]