我得到了以下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
答案 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