【问题标题】:How to get a particular string using preg_replace?如何使用 preg_replace 获取特定字符串?
【发布时间】:2014-07-08 13:34:14
【问题描述】:
我想从 php 中的字符串中获取特定值。以下是字符串
$string = 'users://data01=[1,2]/data02=[2,3]/*';
preg_replace('/(.*)\[(.*)\](.*)\[(.*)\](.*)/', '$2', $str);
我想获取 data01 的值。我的意思是 [1,2]。
我如何使用preg_replace 实现这一点?
如何解决这个问题?
【问题讨论】:
标签:
php
regex
preg-replace
preg-replace-callback
【解决方案1】:
preg_replace 用于用正则表达式替换!
我想你想使用preg_match_all() 从字符串中获取每个数据属性。
你想要的正则表达式是:
$string = 'users://data01=[1,2]/data02=[2,3]/*';
preg_match_all('#data[0-9]{2}=(\[[0-9,]+\])#',$string,$matches);
print_r($matches);
Array
(
[0] => Array
(
[0] => data01=[1,2]
[1] => data02=[2,3]
)
[1] => Array
(
[0] => [1,2]
[1] => [2,3]
)
)
我已经对此进行了测试。
【解决方案2】:
preg_replace() 是错误的工具,我使用了preg_match_all() 以防您以后需要其他项目并修剪您的正则表达式以捕获您正在寻找的字符串部分。
$string = 'users://data01=[1,2]/data02=[2,3]/*';
preg_match_all('/\[([0-9,]+)\]/',$string,$match);
print_r($match);
/*
print_r($match) output:
Array
(
[0] => Array
(
[0] => [1,2]
[1] => [2,3]
)
[1] => Array
(
[0] => 1,2
[1] => 2,3
)
)
*/
echo "Your match: " . $match[1][0];
?>
这使您可以拥有捕获的字符或匹配的模式,因此您可以拥有[1,2] 或只是1,2
【解决方案3】:
preg_replace 用于替换东西。 preg_match 用于提取东西。
所以你想要:
preg_match('/(.*?)\[(.*?)\](.*?)\[(.*?)\](.*)/', $str, $match);
var_dump($match);
看看你得到了什么,然后从那里开始工作。