php bir dizeye bir URL parçası alıyorsanız

4 Cevap php

Bu soru bir "what is the best/easiest way to do"-tip-of-soru daha. Ben gibi bir dize sadece kullanıcıların id kapmak istiyorum

<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>

Ben dizesini ayrıştırmak ve bunun sadece "123456" parça almak istiyorum.

Ben dize patlayabilir düşünüyordum ama sonra id=123456&blahblahblah alacağı ve ben bir şekilde dinamik ucundan çöp kaldırmak için olurdu herhalde. Ben bu regex ile mümkün olabileceğini düşünüyorum ama PHP için oldukça yeni ve böylece regex biraz benim üstümde değil.

4 Cevap

Sadece id= (& veya " kadar herhangi bir karakter kapmak id sorguda son koymak durumda ikincisi hesapları string)

$str = 'a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>';

preg_match('/id=([^&"]+)/', $str, $match);
$id = $match[1];

Fonksiyonu parse_str() burada yardımcı olacak

$str = "profile.php?rdc332738&amp;id=123456&amp;refid=22";
parse_str($str);
echo $id; //123456
echo $refid; //22

Regex:

.*id[=]([0-9]*).*$

Eğer dize patlayabilir eğer:

$string="<a href="/profile.php?rdc332738&amp;id=123456&amp;refid=22">User name</a>"
$string_components=explode('&amp;','$string');

User id kısmı (id = 123456) olacak:

$user_id_part=$string_components[1];

o zaman bir dize yerine yapabilirdi:

$user_id=str_replace('id=','$user_id_part');

Ve kullanıcı kimliği var