2016-03-24 17 views
1

Bir veritabanını arama yapmak için bir cümleyi küçük cümle haline ayırmak için başvurabileceğim belirli bir yol var mı?Bir cümleyi daha kısa cümle bölmek için PHP'yi kullanın.

İlk istek:: Müvekkilim bu örnekte olduğu gibi bir veritabanı arama yapmak istediğiniz Davacı kafede İkinci istek bir kaza oldu: Davacı kahve (in case document states it was a bar etc.) Üçüncü istek bir kaza oldu: Davacı bir kaza oldu ... Son istek: Talep Sahibi

Ben sentece kelimeyi kelimelere ayırmakla ilgili pek çok konu bulamıyorum, ama sözcük parçaları hakkında hiçbir şey bulamadım. Baska öneri?

+2

bu özel kediyi için birçok yol vardır. –

+0

Görevinizdeki farklı istekler için "dönen" mekanizma nasıl tanımlanmalıdır? Program, her bir isteği kaç kelimeyi içermesi gerektiğini nasıl biliyor? – RomanPerekhrest

+0

@RomanPerekhrest, her yeni istek önceki bir eksi bir kelimeye eşit olmalıdır. –

cevap

1

Basit çözüm işlevleri:

$str = "Claimant had an accident in the coffee shop"; 
$words = explode(" ", $str); 
$count = count($words); 

echo implode(" ", array_slice($words, 0, $count)) . "<br>"; // first request 
while (--$count) { 
    echo implode(" ", array_slice($words, 0, $count)) . "<br>"; 
} 

çıkışı:

01 dize işlevlerini kullanarak
+0

Gerçek MVP'sin! –

+0

Bunu duymak harika! Çok teşekkür ederim) – RomanPerekhrest

1

explode(" ", $str)'u kullanabilirsiniz. Daha sonra, cümle kelimesini kelimeyle yeniden yapılandırabilirsiniz (söz konusu yineleme dışındaki kelimeler hariç). Böyle

şey (döngüler daha önce PHP yazmadım, kapalı olabilir):

for ($x = count($sentence); $x >0; $x--) { 
    for($y = 0; $y < $x; $y++) { 
     echo $cars[$y]; 
     echo "<br>"; 
    } 
    echo "<br>" 
} 
+0

Yaklaşımınızı tersten kullanırsam bir şekilde doğrudur. –

+0

@IvanVenediktov İstediğinizde kullanmaktan çekinmeyin. Yardımcı bulduysanız cevabımı da kabul edebilirsiniz. – Laurel

0

Sen noktalama işaretlerine göre böler regexpi yazabilirim. dönemleri, soru işaretleri, ünlem işaretleri ve sonu hattında böler Bu örnek, başlamak gerekir:

$data = 'First request: Claimant lost $500 in the coffee shop. Second request: (unknown) Claimant had an accident? Third request: Claimaint went to the hospital! End of report'; 

preg_match_all("/\s*(.*?(?:[\.\?\!]|$))/", $data, $matches); 
foreach ($matches[1] as $sentence) { 
    if (preg_match("/\S/", $sentence)) { 
     print "Sentence: $sentence\n"; 
    } 
} 

Sonuçlar: explode, implode ve array_slice ile

Sentence: First request: Claimant lost $500 in the coffee shop. 
Sentence: Second request: (unknown) Claimant had an accident? 
Sentence: Third request: Claimaint went to the hospital! 
Sentence: End of report 
1

Bir seçenek daha:

$string = 'Claimant had an accident in the coffee shop'; 

echo "$string<br>"; // use the entire string first as first iteration of 
        // the loop will chop off the last word 

while ($string = substr($string, 0, strrpos($string, ' '))) { 
    echo "$string<br>"; 
} 
İlgili konular