PHP 正则表达式,提取指定字符之间的字符


PHP regex, extracting characters between specified characters

我一辈子都无法弄清楚如何在字符之间提取字符。

考虑这个字符串,

  $string = "sometext/#a=10/#b=25/moretext";

我想做的是提取"a"和"b"(10和25)的值

所以本质上我想做的是找到"#a="并抓取后面/之前的所有内容,然后对 b 做同样的事情。谁能告诉我如何做到这一点?

此外,如果有人知道他们可以推荐的任何可靠的正则表达式教程,我将不胜感激,我已经检查了nettuts,w3schools和 php.net 它们都有很好的教程,但任何其他建议都会很棒。

这对

我有用:

<?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 = 10
b = 25
varname = Hello World

很久以前,我发现该网站 http://www.regular-expressions.info/很有帮助,并且有很好的信息。 您可能会发现用于测试正则表达式的 GUI 程序会很有帮助,因为它们可以在您键入表达式时实时显示匹配项。 我想到的一个例子是正则表达式好友,但这需要花钱。 这个在线正则表达式测试器看起来也很有前途。

$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>";

看到它工作

如果你真的想掌握正则表达式的具体细节,我能推荐的最佳资源是 http://www.regular-expressions.info/