На страницу Пред. 1, 2, 3, 4 След. |
|
Сб Dec 06, 2008 6:20 pm |
Start Post: средствами ПХП вырезать и заглотнуть.. -КЕРК, -ctapbiu Хелп! |
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21727
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
1) средствами ПХП вырезать все что между <style> и </style>) из загруженной а переменную $pony Хтмл страничка, вырезать все что между <style> и </style>, остальное нетрогать.
(страничка идет со символами как (\r)?\n, т.е. ХТМЛ страничка это не одна строка)
вырезать все между тегами и также чтоб самих тегов(<style> и </style>) также неосталося
а тут наоборот задача типа
2) средствами ПХП заглотнуть
Также, в пеерменной $pony2 (содержимое пини2 так же как в в случаи 1. )
... средствами ПХП заглотнут из $pony2 Первую Таблицу (<table...>) сверху ...
НО! тама может быть хоть 5 таблиц заключенных друг в друга..
и поместить эту стр. в $pony3
т.е. вот как
А <table ....> lalala <table ....> lalaal </table> </table> Б
-- захватить и в пони3 поместить полность с табле тегами от А до Б |
|
|
|
|
|
LESBIANS69 |
captain Keen Опытный |
Зарегистрирован: 22.10.2008
Сообщений: 206
|
Обратиться по нику
|
captain Keen |
Ответить с цитатой | | |
|
Ну, и хорошо, что не обиделся. Тем более я обижать не хотел, а хотел помочь.
Дело в том, что твой вариант он не только длиннее, но и делает ненужную работу. Хорошо если это проделывется раз, а если такую фиговину вставить в цикл, то можно получить громадное увеличение времени работы скрипта. Так что, мой совет - приучайся сразу думать об оптимальности кода.
Где найти описание той или иной функции. Идешь на php.net и ищешь в function list, ту функцию, которая тебе нужна. В большинстве случаев там будет даже на русском описание. Вот, например, страница для explode. |
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21727
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
буду ставить плюсы до опупения...
подскажи как строку
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 или хотябы практити. |
|
|
|
|
|
LESBIANS69 |
captain Keen Опытный |
Зарегистрирован: 22.10.2008
Сообщений: 206
|
Обратиться по нику
|
captain Keen |
Ответить с цитатой | | |
|
Не понял за что плюсы. Ты вроде не модератор, а я правил не нарушал
Ты напиши "на человеческом языке" что ты хочешь сделать своим кодом (можно в личку). Я так понимаю тебе надо сделать ветвление в зависимости от зоны домена или нет? В переменной domain что лежит? Только домен или может быть полный урл, включающий путь к файлу. Без понимания того что ты на самом деле хочешь сделать мне сложно предложить свой вариант
IseeDeadPeople писал(а): |
мне сложно понять, такое требует углубленного знания как регулярные выражения в php или хотябы практити.
|
Я бы, все-таки, посоветовал тебе их поучить. Регэкспы вешь крайне нужная, и на начальном уровне сравнительно простая. Тем более что они не принадлежат к одному языку, а используются фактически во всех с небольшой разницей в синтаксисе.
P.S. Я не использую ereg в своих скриптах, по мне, Перл-совместимые функции PHP лучше. |
|
|
|
|
|
|
Li-Hua Чинамэн |
Зарегистрирован: 25.12.2005
Сообщений: 11544
|
Обратиться по нику
|
Li-Hua |
Ответить с цитатой | | |
|
Цитата: |
Не понял за что плюсы. Ты вроде не модератор, а я правил не нарушал
|
Он про поднятие репутации видимо |
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21727
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
"Ты вроде не модератор...." немодератор я точно, а про плюсы имел ввиду Репу/репутацию. (как Li-Hua и сказал)
"Я бы, все-таки, посоветовал тебе их поучить."
да, но тама на англц половина ... а я если не & то английский непонимаю.
P.S. Я не использую ereg в своих скриптах, по мне, Перл-совместимые функции PHP лучше.
дык, я тоже.
но я незнаю способов в ПХП сделать так
$_="ponydomain.com"; print "Here!! I Catch Pony!" if (/pony/i);
минуя ereg ?! а ты ?
а на счет моей задачи
просто
как в одно ereg проверить: есть ли в строке $domain подстрока .net или подстрока .com или подстрока .org. (любая из них, или все вместе они тама есть - также.)
спасибо. |
|
|
|
|
|
LESBIANS69 |
captain Keen Опытный |
Зарегистрирован: 22.10.2008
Сообщений: 206
|
Обратиться по нику
|
captain Keen |
Ответить с цитатой | | |
|
IseeDeadPeople писал(а): |
"Ты вроде не модератор...." немодератор я точно, а про плюсы имел ввиду Репу/репутацию. (как Li-Hua и сказал)
|
Да я просто пошутил
IseeDeadPeople писал(а): |
"Я бы, все-таки, посоветовал тебе их поучить."
да, но тама на англц половина ... а я если не & то английский непонимаю.
|
Ну о чем ты говоришь?! Про регулярные выражения, в том числе и в ПХП масса инфы на русском. Погугли и найдешь.
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
Сообщений: 21727
|
Обратиться по нику
|
|
|
LESBIANS69 |
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21727
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
вот еще подскажите / помогите..
в пхп функция trim режет в конце/начале строки только пустые символы (пробел \s, табуляция \t)... или еще и символы перевода строки \r\n (если они в конце есть, строки) ?
а вообще своими силами, при помощи регэкспов .. вырезать символы перевода строки \r\n это как
$t = ereg_replace("\r", "", $t);
$t = ereg_replace("\n", "", $t);
так ?
как эти две строки в один регэкспов записать ?
также как при помощи регэкспов в строке заменить все парные пробелы(или 3,4.. подряд) на один проблем
Но табуляцию (даже если одна идет, не парная) всеравно на 1 пробел поменять
т.е. все парные, или три подряд проблема заменить строго на один, и все любые другие Большие-пробельные (как \t напр) символы на 1 пробел.
спасибо!
плюсики за мной! |
|
|
|
|
|
LESBIANS69 |
captain Keen Опытный |
Зарегистрирован: 22.10.2008
Сообщений: 206
|
Обратиться по нику
|
captain Keen |
Ответить с цитатой | | |
|
IseeDeadPeople писал(а): |
вот еще подскажите / помогите..
в пхп функция trim режет в конце/начале строки только пустые символы (пробел \s, табуляция \t)... или еще и символы перевода строки \r\n (если они в конце есть, строки) ?
|
Вот не любишь ты мануалы по PHP читать Там же все написано. По умолчанию режет 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
Сообщений: 21727
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
еще чуть помощи надо..
как в ПХП4/5+ при помощи рег.выр.. (спараметром как "\w") (или по другому как нить)..
их строки все `слова` загрузить в массив ?
`слова` тут это обычное слово (a-z) .. обособленное где есть начальный пробел, или конечный пробел ...или вместо пробела запятая.. а может и то и то...
спасибо! |
|
|
|
|
|
LESBIANS69 |
brantozawr Опытный |
Зарегистрирован: 10.11.2008
Сообщений: 126
|
Обратиться по нику
|
brantozawr |
Ответить с цитатой | | |
|
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
|
Обратиться по нику
|
ctapbiu |
Ответить с цитатой | | |
|
или можно так:
Код: |
//очищаем начало и конец текста от ненужных символов
$text = trim($text, ".,!? \t\r\n\0\x0b");
//получаем слова
$res = preg_split('#[\s\.,!?]+#', $text);
|
|
|
|
|
|
|
|
IseeDeadPeople Объединенная Электрическая |
Зарегистрирован: 06.12.2005
Сообщений: 21727
|
Обратиться по нику
|
IseeDeadPeople |
Ответить с цитатой | | |
|
спасибо...
также тут мне надо узнать..
каким рег.выр из ХТМЛ- сорца (текст обычный) в переменную $firstTitle загрузить содержимое тегов <title>lalala</title>
такое же но и в переменную загрузить сожержимое тега `<meta name="description" content="lalala"` (content, т.е. тут "lalala") надо в переменную $firstDesk занести
и тоже самое , но с тегом `<meta name="keywords" content=""` ключики проделать..
спасибо! |
|
|
|
|
|
LESBIANS69 |
brantozawr Опытный |
Зарегистрирован: 10.11.2008
Сообщений: 126
|
Обратиться по нику
|
brantozawr |
Ответить с цитатой | | |
|
IseeDeadPeople писал(а): |
также тут мне надо узнать..
.....
спасибо!
|
get_meta_tags — Extracts all meta tag content attributes from a file and returns an array |
|
|
|
|
|
|
captain Keen Опытный |
Зарегистрирован: 22.10.2008
Сообщений: 206
|
Обратиться по нику
|
captain Keen |
Ответить с цитатой | | |
|
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 |
|
|
|
|
|
|
|
|
Партнеры
|