簡體   English   中英

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程序可能會有所幫助,因為它們可以在您鍵入表達式時實時顯示匹配項。 想到的一個例子是Regex Buddy,但這要花錢。 這個在線正則表達式測試器看起來也很有前途。

$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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM