Jump to content
¯\_( ツ)_/¯
  • TAD GROUP are currently hiring penetration testers. Please read the topic in Career Central subforum.
  • Sponsored Ad

Recommended Posts

В свободното си време създадох набързо едно кодче. Кажете какво мислите за него и според Вас, къде можете да го използвате? Кода е създаден набързо, за да обясня на един приятел идеята ми за решение на негов проблем с модул в проект. Естествено, че самият клас, който съм създал е изключително оглозган спрямо възникналият му казус, но чрез развитие на идеята проблема може да бъде елегантно отстранен (до някаква степен). Все пак кода е просто пример. Та споделете си мнението и какви резултати получавате Вие. :P:DxD

<?php
class Noun
{
	private $plural = ["и", "я", "е", "има", "ина", "ини", "ове"];

	public function isPlural($string)
	{	
		$stringArray = explode(" ", $string);
		$array = [];
		foreach ($stringArray as $word) {
			$word = preg_replace("/[^а-яa-z]/iu", "", $word);
			switch (mb_strlen($word)) {
				case 1 : 
				case 2 : 
				case 3 :
					$array[] = [
						"plural" => false,
						"word" => $word 
					];
					break;
				case 4 :
					$lastChar = $this->getPart($word, -1, mb_strlen($word));
					if (in_array($lastChar, $this->plural)) {
						$array[] = [
							"plural" => true,
							"word" => $word 
						];
					} else {
						$array[] = [
							"plural" => false,
							"word" => $word 
						];
					}
					break;
				default :
					$lastChar = $this->getPart($word, -1, mb_strlen($word));
					if (in_array($lastChar, $this->plural)) {
						$array[] = [
							"plural" => true,
							"word" => $word 
						];
					} else {
						$part = $this->getPart($word, -3, mb_strlen($word));
						if (in_array($part, $this->plural)) {
							$array[] = [
								"plural" => true,
								"word" => $word 
							];
						} else {
							$array[] = [
								"plural" => false,
								"word" => $word 
							];
						}
					}
			}
		}
		return $array;
	}
	
	private function getPart($string, $start = 0, $end = 0)
	{
		return mb_substr($string, $start, $end);
	}
}

$searchString = "Форумците, като мен са много, но малко са така изявени. 
Скромен съм, но като всичките съм любознателен. 
Модератор и модераторка се снимаха голи и пуснаха всичко в чата!
Имам хакерски чувства към компютъра на съседката, но гаджета феномени с чувство за хумор не се намират, 
а бой не ми се яде!";

$noun = new Noun;
foreach ($noun->isPlural($searchString) as $array) {
	if ($array["plural"]){
		print $array["word"]." ";
	}
}

 

Редактирано от freeman987

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

Не разбрах какво питаш. Критики по самия код ли искаш (защото има какво да се каже...), или ?

Сподели публикацията


Адрес на коментара
Сподели в други сайтове
На 4.01.2018 г. at 22:05, DvDty написа:

Не разбрах какво питаш. Критики по самия код ли искаш (защото има какво да се каже...), или ?

То критики и аз си откривам, но целта на кода не е да се използва в проект а да бъде пример по който да обясня на колега как да реши своят проблем. Въпроса ми е дали, колегите тук биха се наели да решат логически казуса, който е довел до създаването на кода. На мен ми е повече от ясно как се решава проблема и какви възможности има колегата, но ми се искаше да си размърдат някои форумци мозъчетата и да поразмишляват над темата. 
Та закачката е следната:

1. Открийте темата на кода!
2. Как Вие бихте решили подобен казус?
3. Какво ще очаквате, като отговор от вашите логически решения? 

 

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

1. Темата на кода си я написал в самият код, не е нужно да се открива нещо

2. Предполагам по подобен начин, само, че без ООП, безсмислено е в случая, нужна ти е само 1 функция

"да решат логически казуса, който е довел до създаването на кода" - нямам представа какво питаш тук

Сподели публикацията


Адрес на коментара
Сподели в други сайтове
Преди 3 часа, DvDty написа:

1. Темата на кода си я написал в самият код, не е нужно да се открива нещо

2. Предполагам по подобен начин, само, че без ООП, безсмислено е в случая, нужна ти е само 1 функция

"да решат логически казуса, който е довел до създаването на кода" - нямам представа какво питаш тук

1. Само, който е прочел кода, знае темата.
2. Аз пък реално бих изписал светилата, за да реша проблема. 

Към цитата ти: Щом си открил темата на кода, кажи ми тогава за какво използвам метода? Кажи, къде и защо се ползва подобна логика! 

На мен, не ми пречи да обясня какво и защо е създадено тук (кода е само пример), но нали за да се научат желаещите, трябва да си поразчупят мисленето, въображението и да пишат в темата. Дискусията е по-добър учител от повечето уроци. Бих желал да обясня доста от нещата, въпреки, че не съм спазвал доста правила в писането на примера от първият пост, съм сигурен, че някои които желаят да се научат да четат и пишат код (на PHP) ще се появят в темата. Чакам и да се открие "скритото" послание ама това по-нататък.  :D:D:D

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

Явно никой не е открил "скритото" послание. Е явно ще го споделя:
 

Цитат

Форумците изявени всичките голи хакерски феномени

Това съобщение ще бъде върнато от кода в първият ми пост. 
 

<?
$searchString = "Форумците, като мен са много, но малко са така изявени. 
Скромен съм, но като всичките съм любознателен. 
Модератор и модераторка се снимаха голи и пуснаха всичко в чата!
Имам хакерски чувства към компютъра на съседката, но гаджета феномени с чувство за хумор не се намират, 
а бой не ми се яде!";

Идеята на кода беше да се даде решение на проблем при търсенето в база данни. При въвеждане на дума в множествено число не се вадят нейните аналози в единствено число от базата с данни. Тоест резултатите не са пълни или липсват, въпреки че в единствено число думата ще върне резултати. Тъй като за да се преобразува една дума в базовият и варянт се изисква доста голяма база с данни, с която да се правят сравнения и да се използва базов аналог на въведеният стринг: Гаджета феномени -> гадже феномен, е излишно натоварване на системата, а съм виждал набор от класове описващи част от граматиката на Българският език. Така се олекотява времето на зареждане на страницата въпреки, че пък не е възможно да се обхванат всичките изключения. По тази причина на доста места се избягва преобразуването на входящият стрингов низ и върнатите резултати от базата са строго отраничени спрямо търсеното съдържание. Логиката може да се раздува много и за всеки език трябва да се създаде собствена такава. 

Просто ми беше интересно да видя някой, който има желанието да обсъдим някакво решение на "загадката", но явно тук са прекалено малко web програмистите.

  • Like 1

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

Можеше просто да споделиш, а не да даваш "загатки" :) 

Сподели публикацията


Адрес на коментара
Сподели в други сайтове
Преди 21 часа, DvDty написа:

Можеше просто да споделиш, а не да даваш "загатки" :) 

И къде е забавното? Първо,  за да се отсеят излишните "логики" от "дървени" философи, трябва да се прочете кода, а това ще го направи само програмист занимаващ се с въпросният език. От там ще последва и по-качествен коментар по темата. Второ, тук се подвизават кадърни програмисти, но е пълно с лапета, или фалшиви акаунти, които бълват само излишни простотии. Като се започне с Кали Линукс проблеми, та чак до РАТ и вируси. Те повечето не са сядали да програмират на какъвто и да е език, а се пишат уроци как се ползва софтуер създаден от друг. Като толкова се обича WEB съдържанието и атаките към сайтове, да  седнат и да прочетат как са изградени, а не да се задават малумни въпроси от рода на "Как да хакна facebook акаунт?". Уааауууу.... Те хората са вложили милиони в разработка на софтуер, а нашият ще го хаква с телефона си.... Да ми кажат, че са решили да откраднат парола, чрез някакви шашми, добре, но да хаква профил, лелеееее. o.O

Сподели публикацията


Адрес на коментара
Сподели в други сайтове
Quote

И къде е забавното?

Ако искам да се забавлявам, си пускам някоя комедия.

Quote

Те повечето не са сядали да програмират на какъвто и да е език, а се пишат уроци как се ползва софтуер създаден от друг. Като толкова се обича WEB съдържанието и атаките към сайтове, да  седнат и да прочетат как са изградени, а не да се задават малумни въпроси от рода на "Как да хакна facebook акаунт?".

Не мисля, че има нужда да се коментират такива хора. Те не са компютърно компетентни и не разбират точно как се случват нещата.

Сподели публикацията


Адрес на коментара
Сподели в други сайтове

Създайте нов акаунт или се впишете, за да коментирате

За да коментирате, трябва да имате регистрация

Създайте акаунт

Присъединете се към нашата общност. Регистрацията става бързо!

Регистрация на нов акаунт

Вход

Имате акаунт? Впишете се оттук.

Вписване

  • Потребители разглеждащи страницата   0 потребители

    No registered users viewing this page.

×

Important Information

За да посещавате този уебсайт е необходимо да се съгласите с Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.