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

preg_match()で特殊文字が最初に出現するインデックスを見つけてから、substr()を使用できます。

于 2012-04-24T17:10:40.217 に答える
0

あなたは簡単に行うことができます

$word = "Overflow's";

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

print_r($matches);

どちらが返されますか:

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