コードサンプル入力を持つ:Demo
$VideoTitles=[
'Kilian à Dijon #4 • Vlog #2 • Primark again !? - YouTube',
'Funfesty on Twitter: "Je commence à avoir mal à la tête à force',
'Sia 2017 Cheap Thrills 2017 live '
];
$VideoTitles=preg_replace('/[^ -\x{2122}]\s+|\s*[^ -\x{2122}]/u','',$VideoTitles); // remove out of range characters and whitespace character on one side only
var_export($VideoTitles);
出力:
array (
0 => 'Kilian à Dijon #4 • Vlog #2 • Primark again !? - YouTube',
1 => 'Funfesty on Twitter: "Je commence à avoir mal à la tête à force',
2 => 'Sia 2017 Cheap Thrills 2017 live',
)
上記正規表現パターンは\x20-\x2122
(空間にトレードマーク記号)から文字の範囲を使用します。アクセント記号や英語以外の文字を含む単語関連の文字の大部分をカバーする必要があるため、この範囲を選択しました。 (確かに、それはまた、多くの非単語に関連する文字を含んでいるあなたが好きな大きな特異のための2つの別々の範囲を使用したい場合があります。/[^\x{20}-\x{60}\x{7B}-\x{FF}]/ui
- この大文字と小文字を区別せずに二つの範囲を検索:スペースに重大なアクセントとは、巻き毛を残しましたブラケットダイエレシスとにラテン小さな文字y)
あなたはこの範囲が不必要に寛大であるか、処理に時間がかかりすぎることが判明した場合、あなたは適切な文字の範囲についての独自の判断を下すことができます。
はたとえば、あなたははるかに軽いが、/[^\x20-\x7E]/u
(チルダにスペースから)あまり寛大好きかもしれません。しかし、それを私の上のフランス語の$VideoTitles
のいずれかに当てはめると、合法的な手紙を取り除くことによってそのテキストをマングルすることになります。
ここには上記の範囲内とそれを超えたものを理解するのに役立つmenu of characters and their unicode numbersがあります。
*また、区切り記号の後にユニコードフラグu
を含めることを忘れないでください。
完全を期すために、私は2個の絵文字を除去するためにリテラル/狭いソリューションは以下のようになり言う必要があります。これらの絵文字は「カチンコ(U + 1F3AC)」と「ヘッドフォンと呼ばれている
$VideoTitle=preg_replace('/[\x{1F3A7}\x{1F3AC}]/u','',$VideoTitle); // omit 2 emojis
( U + 1F3A7)」。