我这辈子似乎都不能弄清楚我是如何在人物之间提取人物的。考虑这个字符串,
$string = "sometext/#a=10/#b=25/moretext";
我想做的是提取“a”和“B”的值(10和25)所以本质上我想做的是找到“#a=”并抓取后面/之前的所有内容,然后对b做同样的事情。有人能告诉我如何才能完成吗?另外,如果有人知道任何可靠的regex教程,他们可以推荐我会非常感激,我已经检查了nettuts,w3schools和php.net,都有很好的,但任何其他的建议将是伟大的。
f45qwnt81#
这对我很有效:
<?php $string = "sometext/#a=10/#b=25/moretext/#varname=Hello World/evenmoretext/"; $matchcount = preg_match_all('@#([^=]+)=([^/]*)/@', $string, $matches); for ($i = 0; $i < $matchcount; ++$i) { echo "{$matches[1][$i]} = {$matches[2][$i]}\n"; }
输出:a = 10B = 25varname = Hello World很久以前,我发现网站http://www.regular-expressions.info/是有用的,它有很好的信息。你可能会发现,测试正则表达式的GUI程序可以帮助,因为它们可以在你输入表达式时真实的显示匹配。想到的一个例子是Regex Buddy,但这需要花钱。这个online regex tester看起来也很有前途。
ghg1uchk2#
$string = "sometext/#a=10/#b=25/moretext"; $expr = '@#([a-z]+)=(.+?)/@'; $count = preg_match_all($expr, $string, $matches); $result = array(); for ($i = 0; $i < $count; $i++) { $result[$matches[1][$i]] = $matches[2][$i]; } echo "<pre>"; print_r($result); echo "</pre>";
See it working如果您真的想掌握正则表达式的基本知识,我推荐的最佳资源是http://www.regular-expressions.info/
2条答案
按热度按时间f45qwnt81#
这对我很有效:
输出:
a = 10
B = 25
varname = Hello World
很久以前,我发现网站http://www.regular-expressions.info/是有用的,它有很好的信息。你可能会发现,测试正则表达式的GUI程序可以帮助,因为它们可以在你输入表达式时真实的显示匹配。想到的一个例子是Regex Buddy,但这需要花钱。这个online regex tester看起来也很有前途。
ghg1uchk2#
See it working
如果您真的想掌握正则表达式的基本知识,我推荐的最佳资源是http://www.regular-expressions.info/