Я хочу найти конкретные данные в текстовом файле, который содержит буквы с диакритическими знаками. Я использовал этот код:

<?php
    $file = 'textfile.txt';
    $searchfor = 'key';


    // get the file contents, assuming the file to be readable (and exist)
    $contents = file_get_contents($file);
    // escape special characters in the query
    $pattern = preg_quote($searchfor, '/');
    // finalise the regular expression, matching the whole line
    $pattern = "/^.*$pattern.*\$/m";
    // search, and store all matching occurences in $matches
    if(preg_match_all($pattern, $contents, $matches))
    {
       echo utf8_encode(implode("\n", $matches[0]));
    }
    else
    {
       echo utf8_encode("No matches found");
    }
?>

Но он чувствителен к регистру и не работает с акцентными буквами.

Кто-нибудь может мне помочь?

Благодарность :)

php
1
Hiroo17 6 Сен 2016 в 16:40

2 ответа

Вы можете использовать это, чтобы получить все строки, содержащие буквы с диакритическими знаками.

preg_match_all("/\s+(.*?[ÇÜ]+.*?)\s+/i", $str, $matches);

[ÇÜ] - это диапазон символов от Ç до Ü

Для получения дополнительных сведений об этом диапазоне см. таблицу ASCII

0
zakaria35 6 Сен 2016 в 17:42

Добавьте i к вашему текущему шаблону.

$pattern = "/^.*$pattern.*\$/mi";
0
Syed mohamed aladeen 6 Сен 2016 в 13:44