我是regex的新手,我认为这是我最好的解决方案。我试图找到一个特殊字符后删除所有文本。
目前我正在玩
preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $word);
但正如您可能知道的那样,只会删除所有特殊章程,而不是在找到第一个特殊字符后的所有内容。
答案 0 :(得分: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);
答案 1 :(得分:1)
您可以将其翻转并使用preg_match
:
preg_match('/^[a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', $word, $matches);
$matches[0]
将包含您要查找的值。
答案 2 :(得分:0)
你可以简单地做
$word = "Overflow's";
preg_match('/[a-zA-Z0-9_]+/', $word, $matches);
print_r($matches);
返回:
Array
(
[0] => Overflow
)
答案 3 :(得分:0)
您可以使用preg_match()找到首次出现的特殊字符的索引,然后使用substr()。