АРМАДА
средствами ПХП вырезать и заглотнуть.. -КЕРК, -ctapbiu Хелп!
На страницу Пред.  1, 2, 3, 4  След.
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг
Сб Dec 06, 2008 6:20 pm Start Post: средствами ПХП вырезать и заглотнуть.. -КЕРК, -ctapbiu Хелп! 

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Вт Dec 09, 2008 7:11 pmОтветить с цитатой
Ну, и хорошо, что не обиделся. Тем более я обижать не хотел, а хотел помочь. Wink
Дело в том, что твой вариант он не только длиннее, но и делает ненужную работу. Хорошо если это проделывется раз, а если такую фиговину вставить в цикл, то можно получить громадное увеличение времени работы скрипта. Так что, мой совет - приучайся сразу думать об оптимальности кода.

Где найти описание той или иной функции. Идешь на php.net и ищешь в function list, ту функцию, которая тебе нужна. В большинстве случаев там будет даже на русском описание. Вот, например, страница для explode.

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18363
Обратиться по нику
# Добавлено:Ср Dec 10, 2008 2:56 pmОтветить с цитатой
буду ставить плюсы до опупения...

подскажи как строку
if (ereg("\.com", $domain) || ereg("\.net", $domain) || ereg("\.org", $domain)) { /* игого */ }
в одно рег выр сделать... ?

if (ereg("\.com|\.net|\.org", $domain)) { /* игого */ }
так ?
if (ereg("(\.com)|(\.net)|(\.org)", $domain)) { /* игого */ }
или так ?
... или ... ?

________________
за ссылку спасибо.

но напр ,выше по вопросу, напр php ereg :
http://ru2.php.net/manual/ru/function.ereg.php - тута мне сложно понять, такое требует углубленного знания как регулярные выражения в php или хотябы практити.
открыть вебкам студию * hosting * domains * VPN * Norton Antivirus
sex toys & dolls * $$ money - деньги тут * водка

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Ср Dec 10, 2008 3:18 pmОтветить с цитатой
Не понял за что плюсы. Ты вроде не модератор, а я правил не нарушал :mrgreen:

Ты напиши "на человеческом языке" что ты хочешь сделать своим кодом (можно в личку). Я так понимаю тебе надо сделать ветвление в зависимости от зоны домена или нет? В переменной domain что лежит? Только домен или может быть полный урл, включающий путь к файлу. Без понимания того что ты на самом деле хочешь сделать мне сложно предложить свой вариант Sad

IseeDeadPeople писал(а):
мне сложно понять, такое требует углубленного знания как регулярные выражения в php или хотябы практити.

Я бы, все-таки, посоветовал тебе их поучить. Регэкспы вешь крайне нужная, и на начальном уровне сравнительно простая. Тем более что они не принадлежат к одному языку, а используются фактически во всех с небольшой разницей в синтаксисе.
P.S. Я не использую ereg в своих скриптах, по мне, Перл-совместимые функции PHP лучше. Wink

Li-Hua
Чинамэн
Зарегистрирован: 25.12.2005
Сообщений: 11544
Обратиться по нику
# Добавлено:Ср Dec 10, 2008 3:21 pmОтветить с цитатой
Цитата:
Не понял за что плюсы. Ты вроде не модератор, а я правил не нарушал


Он про поднятие репутации видимо Smile

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18363
Обратиться по нику
# Добавлено:Ср Dec 10, 2008 7:44 pmОтветить с цитатой
"Ты вроде не модератор...." немодератор я точно, а про плюсы имел ввиду Репу/репутацию. (как Li-Hua и сказал)

"Я бы, все-таки, посоветовал тебе их поучить."
да, но тама на англц половина ... а я если не :smk: & :mrgreen: то английский непонимаю.

P.S. Я не использую ereg в своих скриптах, по мне, Перл-совместимые функции PHP лучше.
дык, я тоже.
но я незнаю способов в ПХП сделать так
$_="ponydomain.com"; print "Here!! I Catch Pony!" if (/pony/i);
минуя ereg ?! а ты ?

а на счет моей задачи
просто
как в одно ereg проверить: есть ли в строке $domain подстрока .net или подстрока .com или подстрока .org. (любая из них, или все вместе они тама есть - также.)

спасибо.
открыть вебкам студию * hosting * domains * VPN * Norton Antivirus
sex toys & dolls * $$ money - деньги тут * водка

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Ср Dec 10, 2008 8:34 pmОтветить с цитатой
IseeDeadPeople писал(а):
"Ты вроде не модератор...." немодератор я точно, а про плюсы имел ввиду Репу/репутацию. (как Li-Hua и сказал)

Да я просто пошутил :mrgreen:

IseeDeadPeople писал(а):
"Я бы, все-таки, посоветовал тебе их поучить."
да, но тама на англц половина ... а я если не :smk: & :mrgreen: то английский непонимаю.

Ну о чем ты говоришь?! Про регулярные выражения, в том числе и в ПХП масса инфы на русском. Погугли и найдешь.

IseeDeadPeople писал(а):

но я незнаю способов в ПХП сделать так
$_="ponydomain.com"; print "Here!! I Catch Pony!" if (/pony/i);
минуя ereg ?! а ты ?


Код:
$domain ="ponydomain.com";
if (preg_match('/pony/i', $domain)) echo 'Here!! I Catch Pony!';



IseeDeadPeople писал(а):

а на счет моей задачи
просто
как в одно ereg проверить: есть ли в строке $domain подстрока .net или подстрока .com или подстрока .org. (любая из них, или все вместе они тама есть - также.)
спасибо.


Можно сделать регэкспами -
Код:
if (preg_match('/\.(com|net|org)/i', $domain)) echo 'Поймали!';

Но, на мой взгляд, они тут излишни. Более быстрый и менее ресурсоёмкий вариант следующий
Код:

$needles = array('.com', '.net', '.org');
if (stristr($domain, $needles) === FALSE) echo 'Поймали!';


IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18363
Обратиться по нику
# Добавлено:Ср Dec 10, 2008 11:01 pmОтветить с цитатой
спасибо! :thup: Wink :mrgreen:
открыть вебкам студию * hosting * domains * VPN * Norton Antivirus
sex toys & dolls * $$ money - деньги тут * водка

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18363
Обратиться по нику
# Добавлено:Ср Dec 17, 2008 4:37 pmОтветить с цитатой
вот еще подскажите / помогите..
в пхп функция trim режет в конце/начале строки только пустые символы (пробел \s, табуляция \t)... или еще и символы перевода строки \r\n (если они в конце есть, строки) ?

а вообще своими силами, при помощи регэкспов .. вырезать символы перевода строки \r\n это как
$t = ereg_replace("\r", "", $t);
$t = ereg_replace("\n", "", $t);
так ?
как эти две строки в один регэкспов записать ?

также как при помощи регэкспов в строке заменить все парные пробелы(или 3,4.. подряд) на один проблем
Но табуляцию (даже если одна идет, не парная) всеравно на 1 пробел поменять
т.е. все парные, или три подряд проблема заменить строго на один, и все любые другие Большие-пробельные (как \t напр) символы на 1 пробел.

спасибо!
плюсики за мной!
открыть вебкам студию * hosting * domains * VPN * Norton Antivirus
sex toys & dolls * $$ money - деньги тут * водка

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Ср Dec 17, 2008 5:43 pmОтветить с цитатой
IseeDeadPeople писал(а):
вот еще подскажите / помогите..
в пхп функция trim режет в конце/начале строки только пустые символы (пробел \s, табуляция \t)... или еще и символы перевода строки \r\n (если они в конце есть, строки) ?


Вот не любишь ты мануалы по PHP читать Smile Там же все написано. По умолчанию режет trim пробелы, табы и переводы строки, если добавить список символов, то и их отрезать будет.

IseeDeadPeople писал(а):

а вообще своими силами, при помощи регэкспов .. вырезать символы перевода строки \r\n это как
$t = ereg_replace("\r", "", $t);
$t = ereg_replace("\n", "", $t);
так ?
как эти две строки в один регэкспов записать ?


Не занимайся ерундой. Не нужны для такой замены регэкспы. Быстрее и менее ресурсоемко это будет делаться так
Код:
$t = str_replace("\r\n", "", $t);



IseeDeadPeople писал(а):
также как при помощи регэкспов в строке заменить все парные пробелы(или 3,4.. подряд) на один проблем
Но табуляцию (даже если одна идет, не парная) всеравно на 1 пробел поменять
т.е. все парные, или три подряд проблема заменить строго на один, и все любые другие Большие-пробельные (как \t напр) символы на 1 пробел.

Код:
$t = preg_replace('|\s+|s', ' ', $t);


IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18363
Обратиться по нику
# Добавлено:Чт Dec 18, 2008 4:36 pmОтветить с цитатой
еще чуть помощи надо..

как в ПХП4/5+ при помощи рег.выр.. (спараметром как "\w") (или по другому как нить)..
их строки все `слова` загрузить в массив ?

`слова` тут это обычное слово (a-z) .. обособленное где есть начальный пробел, или конечный пробел ...или вместо пробела запятая.. а может и то и то...

спасибо!
открыть вебкам студию * hosting * domains * VPN * Norton Antivirus
sex toys & dolls * $$ money - деньги тут * водка

brantozawr
Опытный
Зарегистрирован: 10.11.2008
Сообщений: 126
Обратиться по нику
# Добавлено:Чт Dec 18, 2008 6:33 pmОтветить с цитатой
IseeDeadPeople, надо сперва текст превратить в набор слов, разделенных пробелами, а потом разбить на массив. вот набросал на скорую руку:

Код:


<?
 $text = "Hello! This is the text message.";

 $replace = array (",", ".", "?", "!", "\n", "\r"); // перечисляем все символы, которые надо выкинуть из текста
 foreach ($replace as $char) {
    $text = str_replace($char, " ", $text);
         
 }

 while(strpos($text,"  ")>0) $text = str_replace("  ", " ", $text); // убираем лишние пробелы

 $result = explode (" ", trim($text));
 print_r($result);

?>



Результат:
Цитата:

Content-type: text/html
X-Powered-By: PHP/4.4.0

Array
(
[0] => Hello
[1] => This
[2] => is
[3] => the
[4] => text
[5] => message
)


ctapbiu
Опытный
Зарегистрирован: 06.01.2008
Сообщений: 328
Обратиться по нику
# Добавлено:Чт Dec 18, 2008 7:11 pmОтветить с цитатой
или можно так:
Код:

//очищаем начало и конец текста от ненужных символов
$text = trim($text, ".,!? \t\r\n\0\x0b");
//получаем слова
$res = preg_split('#[\s\.,!?]+#', $text);


IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18363
Обратиться по нику
# Добавлено:Пт Dec 19, 2008 4:06 pmОтветить с цитатой
спасибо...

также тут мне надо узнать..

каким рег.выр из ХТМЛ- сорца (текст обычный) в переменную $firstTitle загрузить содержимое тегов <title>lalala</title>

такое же но и в переменную загрузить сожержимое тега `<meta name="description" content="lalala"` (content, т.е. тут "lalala") надо в переменную $firstDesk занести

и тоже самое , но с тегом `<meta name="keywords" content=""` ключики проделать..

спасибо!
открыть вебкам студию * hosting * domains * VPN * Norton Antivirus
sex toys & dolls * $$ money - деньги тут * водка

brantozawr
Опытный
Зарегистрирован: 10.11.2008
Сообщений: 126
Обратиться по нику
# Добавлено:Пт Dec 19, 2008 4:33 pmОтветить с цитатой
IseeDeadPeople писал(а):

также тут мне надо узнать..
.....
спасибо!



get_meta_tags — Extracts all meta tag content attributes from a file and returns an array

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Пт Dec 19, 2008 4:41 pmОтветить с цитатой
IseeDeadPeople писал(а):
каким рег.выр из ХТМЛ- сорца (текст обычный) в переменную $firstTitle загрузить содержимое тегов <title>lalala</title>


Код:
preg_match('|<title.*?>(.*?)<\/title|si', $html, $firstDesk);
$firstDesk = $firstDesk[1];


IseeDeadPeople писал(а):
такое же но и в переменную загрузить сожержимое тега `<meta name="description" content="lalala"` (content, т.е. тут "lalala") надо в переменную $firstDesk занести

и тоже самое , но с тегом `<meta name="keywords" content=""` ключики проделать..

Можно и это сделать регэкспами. Только зачем?!?! Есть встроенная функция для этого - get_meta_tags
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры