2011-12-03 10 views
3

"U"を削除する方法が必要です。 "。U."または ".U。"が文字列の最後にある場合(1番目の場合は空白、2番目の場合は空白)です。正規表現(php)の特定条件を削除する正規表現

  1. Que tiene amistad.U。
  2. Queiene amistad。 U.
  3. シカゴのU.のファン。
  4. KnicksのImファン。シカゴのU.これらの4つの文字列から

、それだけだから、それぞれの場合の結果のテキストは次のようになり1及び2に適用する必要があります。

  1. ケのTIENEのアミスタッド。
  2. Queiene amistad。
  3. シカゴのU.のファン。
  4. KnicksのImファン。シカゴのU.

は私がstr_replace()でいくつかの選択肢を試してみましたが、これは、上記bosted条件の正規表現で行う必要があります。何か案は?ありがとう!

+0

関数 'preg_replace()'を見てください:http://php.net/manual/en/function.preg-replace.php –

答えて

4

は、私があまりにも頻繁に、このように答えるんだけど、"lookbehind" assertionはここに働くかもしれない:

ドットおよび/または内のスペースを末尾を残し
= preg_replace("/(?<=\. |\.)U\.$/", "", $str); 

、唯一の条件として、それらを見ます。

1

文字列の末尾に正規表現を固定するには、$を使用します。 \s?は、可能なスペースを探します。

$new_string = preg_replace("/\s?U\.$/", "", $string); 


$string = "Que tiene amistad. U."; 
$new_string = preg_replace("/\s?U\.$/", "", $string); 
echo $new_string; 

// Que tiene amistad. 

$string = "Im fan of U. of Chicago."; 
$new_string = preg_replace("/\s?U\.$/", "", $string); 
echo $new_string; 

// Im fan of U. of Chicago. 
+1

あなたの知恵を共有してください。 –

+0

その答えはかなり包括的でなければなりません。しかし、特にUの前にドットを要求したので、コマンドを 'preg_replace(" /。\ s?U \。$/"、"。 "、$ string)' – Thilo

+0

@Thiloに変更することをお勧めします。 OPの望みの出力を見て、 'U'の前の最後の' .'がまだ存在するので、正規表現に置き換えられません。 –