使用 PHP 的自定义简码正则表达式匹配
RegEx matching for custom shortodes using PHP
我正在尝试将一些短代码实现到 WYSIWYG 编辑器中,稍后将由动态内容替换。我似乎无法让正则表达式代码正常工作。
我已经尝试了无数来自 Google 的不同链接,但似乎没有任何内容符合我的确切问题。
我的字符串:
Project Information: [sc id=15]number of properties[\sc] test [sc
id=15]number of items[\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 Code demo
$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
)
)
我正在尝试将一些短代码实现到 WYSIWYG 编辑器中,稍后将由动态内容替换。我似乎无法让正则表达式代码正常工作。
我已经尝试了无数来自 Google 的不同链接,但似乎没有任何内容符合我的确切问题。
我的字符串:
Project Information: [sc id=15]number of properties[\sc] test [sc id=15]number of items[\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 Code demo
$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
)
)