i
Полезная информация
Свернуть
29.04.2024
ruensvdefrptesitzharnl

Итак, кусочек дурдома по заявкам трудящихся...

Итак, кусочек дурдома по заявкам трудящихся...

Для начала выкладываю простой вопрос. Имеется текст, из которого я хочу достать все слова с большой буквы не в начале предложения. 

Мне дали решение с поиском слов, но программа упорно ищет и в начале предложения:

 

<?php
 $data = $_POST;
require_once('db.php');
require_once('global_var.php');
require_once('Functions.php');
?>


<?php


$str = '.  
     Съешь ещё. Этих мягких Булок да выпей Чаю. 
 ';
echo $str;
echo "<br>";
function word_search($data) {
      $array_words = explode(' ', $data);
     foreach ($array_words as $key => $value) {
              if ($key !== 0) {
                      $temp = mb_substr($value, 0, 1, 'utf-8');
                      if(mb_strtoupper($temp, 'utf-8') !== $temp)  {
                echo ' ';
                } 
           else {  
                  $result[' '][] = $value;
              global $link;
              $sql = "INSERT INTO `Name_text`(`Id_Name`, `Name`) VALUES ('".$id."', '".$value."')";
              $res = mysqli_query($link, $sql);
              $data = mysqli_fetch_all($res, MYSQLI_ASSOC);                   
            }
            
        }
    }
    
    return $result;
}

echo ' ' . var_export(word_search($str), 1) . '</pre>';
?>

Пытаюсь сделать, чтобы программа не видела слова с большой буквы после точки. Ниже перечисляю все варианты, мой испробованные с комментариями, что она делает:

$str = preg_replace('/. Э/', '',$str); //- это работает
//$str = preg_replace('/. [^А-Я]/', '',$str); //- что-то ломает и не работает
//$str = preg_replace('/. [А-Я]/', '',$str); // - ломает кодировку
//$str = preg_replace('/. [А-Я]/u', '',$str); // кодировку видит, но сносит ВСЕ большие буквы кроме первой
//$str = preg_replace('/[. А-Я]/u', '',$str);// сносит все большие буквы
//$str = preg_replace('//. [А-Я]/u/', '',$str); // ничего не видит
//$str = preg_replace('/. [АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ]/u', '',$str); // тот же эффект что и [А-Я] во всех случаях
//$string = preg_replace('/$/', '. ', $string); // в конец
//$str = preg_replace('/. (^[А-Я])/', '',$str); - не работает
//$alf = array('/. [А-Я]/'); 
//$str = preg_replace($alf, '',$str); - тоже не работает
//$str = preg_replace('/. /+ 1', '',$str); // - выдает нуль
//$str = preg_replace('/. + 1/', '',$str); - // не работает
$str = preg_replace('/[. ] [А-Я]/', '',$str); // ломает кодировку, но работает!

 

Итого имеем в наличии: вариант 1, где я указываю конкретнуб букву, но буквы-то разные бывают. И последний вариант, он выдает результат:

�ъешь ещё�тих мягких Булок да выпей Чаю.
array ( ' ' => array ( 0 => '', 1 => ' ', 2 => '', 3 => '', 4 => 'Булок', 5 => 'Чаю.', 6 => ' ', 7 => '', ), )

 

То бишь, ломает кодировку, но за счет этого не видит большие буквы. Но иногда дает сбои. Если я суну туда текст откуда-нибудь еще, а не напишу сама.

И пытаюсь разобраться, как все-таки решить элементарный вопрос - найди все большие буквы НЕ после точки?

 

0
Aagira Aagira 9 месяцев назад #
Шальная мысль вот здесь в программе:
  1. $array_words = explode(' ', $data);

в explode(' ', $data); заменить пробел, по которому слова разделяются, на переменную, означающую пробел. После чего в этой переменной проверять, есть ли там сочетание знаков точка-пробел. Если есть, то, соответственно, пропускать, или что-то еще делать.
Костыль, да.

Посмотрела внимательнее, в коде, значит, подобное осуществляется в строке. Щас попробую покопаться.
0
Aagira Aagira 9 месяцев назад #
$str = preg_replace('/[. ] [А-Я]/', '',$str); // ломает кодировку, но работает!

А кодировка установлена в начале кода? А на странице?

И пытаюсь разобраться, как все-таки решить элементарный вопрос — найди все большие буквы НЕ после точки?

То есть, после точки не нужны ВООБЩЕ? Или надо и после точки, и не после точки?
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #
Надо убрать большие буквы после точки.

Кодировку пихала, может, не туда
0
Aagira Aagira 9 месяцев назад #
Убрать — в смысле чтоб после точки было: «ъешь», «тих»?
Если так, попробуй убрать знак доллара из формулы ниже.
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #
Спасибо. Пока заработало. Проверю на куче вариантов, чтобы наверняка…
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #
Работает!!! bravo ch_rose
0
Aagira Aagira 9 месяцев назад #
Ураааа! dance
0
Aagira Aagira 9 месяцев назад #
Что-нибудь типа такого, не знаю:

  1. $str = preg_replace('/([. ] [А-Я])$/u', '', $str);


Здесь список знаков для функции.
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #
Вот ента штука тоже не заработала…

Результат:
Съешь ещё. Этих мягких Булок да выпей Чаю.
array ( ' ' => array ( 0 => '', 1 => ' ', 2 => '', 3 => '', 4 => '', 5 => '', 6 => 'Съешь', 7 => 'Этих', 8 => 'Булок', 9 => 'Чаю.', 10 => ' ', 11 => '', ), )

То есть слова после точки продолжает брать.
0
Aagira Aagira 9 месяцев назад #
А вот к тебе вопрос встречный: уведомления приходят на почту?
0
Мария Фомальгаут Мария Фомальгаут 9 месяцев назад #
Приходят. Все в порядке.
0
Aagira Aagira 9 месяцев назад #
Спасибо. А то тут настройка так сделана хреново, зазеваешься — собьется.

Похожие темы:

Сначала казалось, что все так просто: написали программку, кинули клич, мол, ставьте себе на комп, к...
По Задорнову. Планы на год. Несмотря на ошибки в чертежах и неправильную сборку запустить аэродина...
Кажется, элементарная задача... Ну ё-моё... Есть две таблицы: существительных и прилагательных. Хоч...
Котег для привлечения внимания.   Дамы и господа, кто шарит в программировании, вам дурацкий ...

Все представленные на сайте материалы принадлежат их авторам.

За содержание материалов администрация ответственности не несет.