我想从字符串中的占位符获取值。
$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum";
我想要一个返回“10”作为结果数组的唯一元素的函数。
多个占位符是可能的,多元素结果是理想的。
$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum [get_this_value=9] etc etc";
结果:
array(10, 9)
首先你应该了解正则表达式。我强烈推荐本教程。
然后您可以在 PHP 文档中阅读一些 PHP 特定的正则表达式问题。
但是为了让您开始,这可以解决您的问题:
preg_match_all("/\[[^\]=]*=(\d+)\]/", $string, $matches);
现在
$matches[1]
将是您想要的数组。请注意,这并不取决于特定的字符串get_this_value
。
为了让您通过链接页面实际自学一些正则表达式,我不会详细解释这个正则表达式,而只是告诉您我使用过的概念。未转义的方括号
[...]
标记一个字符类。在这种情况下(由于^
)一个否定。 \d
是一个内置字符类。 +
是一个重复量词。括号(...)
标记一个捕获组。
<?php
$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem [get_this_value=13] ipsum";
preg_match_all("~\[get_this_value=(\d+)\]~i", $string, $matches);
print_r($matches);
/*
Array
(
[0] => Array
(
[0] => [get_this_value=10]
[1] => [get_this_value=13]
)
[1] => Array
(
[0] => 10
[1] => 13
)
)
*/