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";
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";
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
bu hatayı al: Uyarı: preg_match(): Derleme başarısız oldu: ofset'te tekrarlanacak bir şey yok 25 –
@ 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. –
teşekkür ederim bu çözmek tüm harika –
$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.
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'
$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); });
Bunun basit ve en iyi yolu olduğunu söyleyebilirim ... –
çok farklı cevaplar zaten olduğundan, burada başka bir şeydir:
$result = preg_grep("/$search/", explode(", ", $string));
print_r($result);
'preg_match' ile bir şey denediniz mi? –
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
'$ eşleşmeler = array_filter (patlat (',', $ dize), işlev ($ değer) kullanımı ($ arama) {return strpos ($ değer, $ arama)! == yanlış;}); –