2016-03-22 12 views
1

Birisi, bunu çözmemde bana yardımcı olacak bir sorum var. Ben virgülle ayırarak bir dize var ve kısmen eşleşen bir öğe bulmak istiyorum:php arama dizgisi virgülle ayrılmış ve eşleşen öğeyi al

$result = "GenomaPrintOrder"; 
+1

'preg_match' ile bir şey denediniz mi? –

+0

Birleştirilen dizenin nasıl birleştirildiğini biliyorsanız, bu dizeyi bir dizide patlatmak ve bunun üstesinden gelmek için bu tutkalı kullanabilirsiniz. – klaar

+0

'$ eşleşmeler = array_filter (patlat (',', $ dize), işlev ($ değer) kullanımı ($ arama) {return strpos ($ değer, $ arama)! == yanlış;}); –

cevap

2

böyle yapabilirsiniz.

Php Kod

<?php 
    $subject = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView, NewPrintOrder"; 
    $pattern = '/\b([^,]*PrintOrder[^,]*)\b/'; 
    preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER); 
    foreach ($matches as $val) { 
     echo "Matched: " . $val[1]. "\n"; 
    } 
?> 

Çıktı

Matched: GenomaPrintOrder 
Matched: NewPrintOrder 

Ideone Demo

+0

bu hatayı al: Uyarı: preg_match(): Derleme başarısız oldu: ofset'te tekrarlanacak bir şey yok 25 –

+0

@ WalterNuñez: Kodu değiştirdim. Lütfen kontrol edin. En son örnekte birden fazla eşleşmeyi demolamak için fazladan 'NewPrintOrder' dizesi ekledim. –

+0

teşekkür ederim bu çözmek tüm harika –

1
$search = "PrintOrder"; 
$string = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView"; 
$result = array(); 
$tmp = explode(",", $string); 
foreach($tmp as $entrie){ 
    if(strpos($entrie, $string) !== false) 
     $result[] = trim($entrie); 
} 
:

$search = "PrintOrder"; 
$string = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView"; 

Ben filtrenin sonucu kısmi maçından sadece tam dize almak gerekir

Bu, arama dizenizle eşleşen tüm dizeleri içeren bir dizi alacaktır.

1

Sen sonuç almak için normal ifadeyi kullanabilirsiniz: preg_match_all ile

$search = "PrintOrder"; 
$string = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView"; 

$regex = '/([^,]*' . preg_quote($search, '/') . '[^,]*)/'; 

preg_match($regex, $string, $match); 

$result = trim($match[1]); // $result == 'GenomaPrintOrder' 
1
$search = "PrintOrder"; 
$string = "IDperson, Inscription, GenomaPrintOrder, GenomaPrintView"; 


$array = explode(" ", $string); 
echo array_filter($array, function($var) use ($search) { return preg_match("/\b$searchword\b/i", $var); }); 
+0

Bunun basit ve en iyi yolu olduğunu söyleyebilirim ... –

0

çok farklı cevaplar zaten olduğundan, burada başka bir şeydir:

$result = preg_grep("/$search/", explode(", ", $string)); 
print_r($result); 
İlgili konular