我和我的团队都陷入了困境,我有以下代码。
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut bibendum augue eu arcu mollis cursus. Curabitur nec purus ipsum. Fusce ut erat leo, vitae malesuada lacus. Quisque varius gravida justo ut aliquam. Integer accumsan, ante non volutpat semper, orci sem luctus odio, sit amet convallis odio justo id nisl. Nunc sed lacus nisi, quis accumsan massa. Donec ante enim, fermentum sit amet placerat nec, eleifend elementum nibh
[[BLOGIMAGE_20090303011757.jpg||480]]
us dolor nec est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam accumsan blandit purus eget vestibulum. Nullam neque sem, suscipit sit amet mattis eu, imperdiet quis ligula. Integer aliquam dapibus gravida. Pellentesque ultrices sapien orci. Suspendisse at eros non dolor accumsan cursus mattis nec justo.
[[BLOGIMAGE_20090303011819.jpg||480]]
Aenean cursus lacinia arcu vitae malesuada. Fusce fermentum enim sit amet elit fermentum at consectetur ante vulputate. Aliquam sagittis nulla id magna facilisis tempus. Suspendisse eget feugiat libero. Pellentesque non lorem sem, eu posuere velit. Nulla id nulla ligula.
[[BLOGIMAGE_20090303011842.jpg||480]] ..... etc";
$pat = "\[\[(.*)\|\|(.*)\]\]";
$mat = '<img src="/path/to/file/imgs/$1" width="$2px" />';
$text = preg_replace($pat , $mat, $text);
我们要做的是使用$ mat中的结构将[[imagefile|||size]]转换为image标签.这场比赛非常适合RegExr(一种Adobe Air程序)和各种JavaScript在线测试人员
我得到的错误是:-
Message: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash
因此,如果我添加一个分隔符,例如...
$pat = "^[[(.)\|\|(.)]]^";
然后比赛停止,但我不再遇到任何错误。
我们将不胜感激。
最新回答
- 2021-1-101 #
- 2021-1-102 #
来自PHPE手册中关于PCRE分隔符的
A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.
Often used delimiters are forward slashes (
/
),井号(#
)和波浪号(~
)。因此您可以使用
/
作为将模式与可选修饰符分开的定界符:/\[\[(.*)\|\|(.*)\]\]/
但也请注意:
In addition to the aforementioned delimiters, it is also possible to use bracket style delimiters where the opening and closing brackets are the starting and ending delimiter, respectively.
此外,目前,您的模式将尽可能地匹配,因为两个量词都是贪婪的.您可能希望更改它们,以免只匹配得尽可能少:
/\[\[(.*?)\|\|(.*?)\]\]/
- 2021-1-103 #
尝试
$pat = "/\[\[(.*)\|\|(.*)\]\]/m";
相关问题
- regex:使用PHP从html代码获取youtube视频IDphpregex2021-01-11 11:26
- 用PHP解析CSS文件phpcssregexparsing2021-01-10 22:27
- regex:正则表达式单词边界在PHP中到底如何工作?phpregex2021-01-10 21:26
- php:preg_replace:向后引用后添加数字phpregexescapingbackreference2021-01-10 18:55
preg_replace()
需要定界符:传统上是正斜杠,但是可以是任何字符-尤其是当您在正则表达式本身中需要正斜杠时,可以诉诸其他字符.
这种灵活性使您可以表达
"/http:\/\/foo\/bar\//"
("倾斜牙签综合征")as"!http://foo/bar/!"
分隔符是分隔正则表达式和正则表达式标志(也称为"修饰符")所必需的,例如:
...这使用了
i
标记以声明不区分大小写的正则表达式。