2017-06-08 25 views
0

、テキスト内の単語を検索します。 接尾辞は、パイプによってテキストから区切られています。 例:接尾辞| SOME_TEXT;この問題を解決するためにどのようにPHP

input:text | lorem ips llfaa Loremipsumtext。 出力:Loremipsumtext

私のコードは、このですが、ロジックは、おそらく間違っている:

$mystring = fgets(STDIN); 
$find = explode('|', $mystring); 
$pos = strpos($find, $mystring); 

if ($pos === false) { 
    echo "The string '$find' was not found in the string '$mystring'."; 
} 
else { 
    echo "The string '$find' was found in the string '$mystring',"; 
    echo " and exists at position $pos."; 
} 
+0

あなたのコード$ findは配列です、strposは文字列を期待しています – rtfm

+0

findは配列です。エコーで配列を使うことはできません。 print_rまたはvar_dumpを使用することができます。別の方法はforeachループです。 –

+0

'$ find [1]'を検索する必要があります。パイプの後に入力の部分が含まれています。 – Barmar

答えて

1

explode()は、配列を返すので、あなたは接尾辞のため$find[0]を使用する必要がある、とテキストの$find[1]。だから、次のようになります。

$suffix = $find[0]; 
$text = $find[1]; 
$pos = strpos($text, $suffix); 

if ($pos === false) { 
    echo "The string '$suffix' was not found in '$text'."; 
} else { 
    echo "The string '$suffix' was found in '$text', "; 
    echo " and exists at position $pos."; 
} 

しかし、これは接尾辞ではなく、それを含む単語の位置を返します。また、接尾辞が単語の最後にあるかどうかをチェックしません。単語のどこにでもそれを見つけることができます。文字列だけでなく単語にマッチさせる場合は、正規表現を使用する方が良いでしょう。

$suffix = $find[0]; 
$regexp = '/\b[a-z]*' . $suffix . '\b/i'; 
$text = $find[1]; 
$found = preg_match($regexp, $text, $match); 

if ($found) { 
    echo echo "The suffix '$suffix' was found in '$text', "; 
    echo " and exists in the word '$match[0]'."; 
} else { 
    echo "The suffix '$suffix' was not found in '$text'."; 
} 
+0

ありがとう、しかし、 "見つける"単語を表示する方法、エコー "見つける"単語? – user2708032

+0

'$ match [0]'には単語が含まれています。 – Barmar

+0

ありがとう、私はそれを得た; ) – user2708032

関連する問題