strpos检查其他特殊字符而不是点

时间:2017-10-18 10:36:08

标签: php

我得到了以下php代码:

$name = 'Test. I Am-trd-yr-d-dq .mmmm';

if (strpos($name, '.') !== false) {
    preg_replace('/[^a-zA-Z0-9\s]/', ' ', substr($name, 0, 40)));
} else {
    preg_replace('/[^a-zA-Z0-9\s]/', '', substr($name, 0, 40)));
}

我想要做的是,如果字符串包含.点,如果它包含''-,则应将其替换为/。应该将其替换为' ' spacw,但目前它正在执行Test I Am trd yr d dq mmmm,它将点更改为'',因此我有2个空格。

预期结果应为Test I Am trd yr d dq mmmm

3 个答案:

答案 0 :(得分:2)

了解preg_replace()。然后阅读str_replace()。它也可以满足您的需求,运行速度更快,代码更清晰:

$name = 'Test. I Am-trd-yr-d-dq .mmmm';

$changed = str_replace(
    array('.', '-', '/'),     // replace each of these items...
    array('',  ' ', ' '),     // ... with the corresponding item from this list...
    $name                     // ... into this
);

var_dump($changed);
# string(26) "Test I Am trd yr d dq mmmm"

答案 1 :(得分:0)

您可以通过以下方式实现目标:

$name = 'Test. I Am-trd-yr-d-dq .mmmm';
$name = preg_replace('/\./', '', $name);
$name = preg_replace('/[\-]/', ' ', $name);

答案 2 :(得分:0)

如果您想使用Formats,请尝试以下操作:

regex

的var_dump($名);

或者您只需使用$name = 'Test. I Am-trd-yr-d-dq .mmmm'; $name = preg_replace_callback_array( [ '/[.]/' => function ($match) { return ''; }, '/[/-]/' => function ($match) { return ' '; } ], $name); strtr

str_replace