0

我是正则表达式的新手,我认为这是我最好的解决方案。在找到特殊字符后,我试图找到删除所有文本的方法。

目前我正在玩

preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $word);

但是您可能知道,这只会删除所有特殊章程,而不是找到第一个特殊字符后的所有内容。

4

4 回答 4

1

如果要删除从不同于 的第一个字符开始的每个字符a-zA-Z0-9_ %[].()%&-,可以使用以下命令:

preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-].*/s', '', $word);

相反,如果您想在a-zA-Z0-9_ %[].()%&-找到一个字符后删除所有内容,您可以使用以下命令:

preg_replace('/[a-zA-Z0-9_ %\[\]\.\(\)%&-].*/s', '', $word);
于 2012-04-24T16:59:52.847 回答
1

你可以把它转过来使用preg_match

preg_match('/^[a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', $word, $matches);

$matches[0]将包含您要查找的值。

于 2012-04-24T17:00:03.750 回答
0

你可以简单地做

$word = "Overflow's";

preg_match('/[a-zA-Z0-9_]+/', $word, $matches);

print_r($matches);

返回:

Array
(
    [0] => Overflow
)
于 2012-04-24T17:07:10.613 回答
0

You could find the index of the first occurrence of the special character with preg_match() and then use substr().

于 2012-04-24T17:10:40.217 回答