正则表达式匹配字符,除非它们位于字符串的末尾

时间:2013-01-11 09:13:14

标签: php regex replace

不确定如何解释这一点,但现在就这样了。

$val可以包含一个后跟无,一个或多个点的字符串:

test
test.
test..
test... 
etc

使用正则表达式我正在寻找$val中的任何无效字符,然后我想替换它们。

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

$inv是一个无效条目数组,它还包含一个点。

如何从$inv中删除所有$val个字符,除了最后的任何点?

如果$val = te%st...正确的结果应该测试......

如果$val = te.est.应该测试正确的结果。

希望这是有道理的。感谢。

3 个答案:

答案 0 :(得分:0)

您不需要正则表达式,只需使用str_replace删除所有不需要的字符:

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

答案 1 :(得分: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

答案 2 :(得分:0)

试试这个

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

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

$ ret现在包含

test

etc