php - 使用 PHP 对自定义 shortode 进行正则表达式匹配
问题描述
我正在尝试在 WYSIWYG 编辑器中实现一些简码,稍后将被动态内容替换。我似乎无法让正则表达式代码正常工作。
我尝试了无数来自谷歌的不同链接,但似乎没有什么能与我的确切问题相匹配。
我的字符串:
项目信息:[sc id=15]属性数[\sc]测试[sc id=15]项目数[\sc]
开发需要以下测试:
Walls: [sc id=12]number of walls[\sc]
我的代码:
preg_match_all('/[sc id=[0-9]+](.*?)[\/sc]/', $input_lines, $output_array);
我想先获取 id 号,然后用来自我的数据库的动态字符串替换整个短代码。
这是我目前得到的:
Array
(
[0] => Array
(
[0] => [sc id=15]number of properties
[1] => sc] tes
[2] => [sc id=15]number of items
[3] => [sc id=12]number of walls
)
[1] => Array
(
[0] => number of propertie
[1] => te
[2] => number of item
[3] => number of wall
)
)
我该如何解决这个问题?
解决方案
您需要转义[
以\[
使其含义字面匹配,[
并且在您的正则表达式中还有一个问题,您在其中写入\/
而[\/sc]
不是\\
. 您可以使用此正则表达式,它与您预期的方式正确匹配。
\[sc id=[0-9]+\](.*?)\[\\sc\]
这是一个PHP 代码演示
$input_lines = "Project Information: [sc id=15]number of properties[\sc] test [sc id=15]number of items[\sc]
The development requires the following testing:
Walls: [sc id=12]number of walls[\sc]";
preg_match_all('/\[sc id=([0-9]+)\](.*?)\[\\\\sc\]/', $input_lines, $output_array);
print_r($output_array);
印刷,
Array
(
[0] => Array
(
[0] => [sc id=15]number of properties[\sc]
[1] => [sc id=15]number of items[\sc]
[2] => [sc id=12]number of walls[\sc]
)
[1] => Array
(
[0] => 15
[1] => 15
[2] => 12
)
[2] => Array
(
[0] => number of properties
[1] => number of items
[2] => number of walls
)
)
推荐阅读
- reactjs - 用于动态设置 css-classes 的自定义 react-hook
- powershell - 如何将 Device\HarddiskVolume[n] 与驱动器号相关联
- python - Python 中如何定义分类变量的级别?
- swift - 为什么这在一个地方有效,而在另一个地方无效?
- python - 尝试在 Azure 中使用 matplotlib 时出现“ModuleNotFoundError: No module named 'tkinter'”
- 7zip - 如何解压缩到包含名称中的点的文件夹中
- c# - WPF:数据绑定跟踪的性能影响
- java - Maven 中用于提供和运行时的传递范围
- ruby - 在测试结束之前验证 rspec 模拟
- python - 根据条件从数据框列表中删除数据框