2013-01-11 104 views
0

不知道如何解釋這一點,但在這裏。正則表達式匹配字符,除非它們在字符串末尾

$val可以包含一個字符串,然後沒有,有一個或多個點:使用正則表達式我正在尋找在$val任何無效字符,然後我想,以取代他們

test 
test. 
test.. 
test... 
etc 

(preg_replace('-['.$inv.']-',"",$val)) 

$inv是無效條目的陣列,這也包括一個點。

如何從$val中除去所有$inv個字符除末尾有點?

如果$val = te%st...正確的結果應該是測試...

如果$val = te.est.正確的結果應該是測試。

希望是有道理的。謝謝。

+1

隨着 「關於結束」 你的意思是詞語末尾,行結束或文本結束? –

+0

你能告訴我們你的預期產出應該是什麼? – fedmich

+0

if $ val = te%st ...正確的結果應該是測試... if $ val = te.est。正確的結果應該是測試。 謝謝 – JeffVader

回答

0

你並不需要一個正則表達式,只需使用str_replace刪除所有不想要的字符:

$replace = array('.', ','); // The characters you want to replace. 
echo str_replace($replace, '', '..,.Here,, ..be some text,.'); 
// Result: 
// 'Here be some text' 
+0

@ user1932360,是否爲你工作,或不?你可以將任何你想刪除的字符添加到'$ replace'數組中。 – Cerbrus

+0

這將工作,但如果我包括。那麼它會從所有的字符串中刪除,我需要保留一些點。 請參閱我更新的原始帖子。 – JeffVader

0

下面的代碼會從字符串中刪除所有非字母NUM個字符。

$string = "Sample text with letters and numbers 45678 and special symbols ($*&#($*#"; 

$new_string = ereg_replace("[^A-Za-z0-9]", "", $string); 

echo $new_string 
+0

我想留在字符串中有一些非alpha字符。 – JeffVader

0

嘗試了這一點

<?php 
    $val = ' 
    test 
test. 
test.. 
test... 
etc 
    '; 
    $inv = 'te'; 
    $ret = preg_replace("@([$inv].+)\[email protected]",'',$val); 

    var_dump($val); 
    var_dump($ret); 

$ RET現在包含

test 

etc 
相關問題