|
|
|
|
|
для: Lelik
(05.08.2006 в 04:20)
| | Лучше под новые вопросы заводить новые темы - URL не самая лучшая задача в регулярных выражениях, универсального решения нет, нужно под конкретную задачу подстраиваться. | |
|
|
|
|
|
|
|
для: cheops
(02.08.2006 в 10:33)
| | Спасибо, и для закрепления - мне надо проверить вводимые данные, а точнее урл сайта, чтоб он был в виде www.site.domain, а также указать запрещенные символы(например слэши).
>PS Такие здоровые листинги лучше прикреплять в виде файла
Прошу прощенья. Следующий раз учту :) | |
|
|
|
|
|
|
|
для: Lelik
(02.08.2006 в 02:39)
| | Можно поступить следующим образом
<?php
$content = file_get_contents("get.txt");
preg_match_all("|<item>[\s]*<title>([^<]+)</title>[\s]*<link>([^<]+)</link>[\s]*<description>([^<]+)</description>[\s]*<pubDate>([^<]+)</pubDate>[\s]*<guid>([^<]+)</guid>|isU", $content, $out);
echo "Число записей - ".count($out[1])."<br>";
unset($out[0]);
echo "<pre>";
print_r($out);
echo "</pre>";
?>
|
PS Такие здоровые листинги лучше прикреплять в виде файла | |
|
|
|
|
|
|
|
для: cheops
(01.08.2006 в 22:18)
| | из файла, например такого :
<?xml version="1.0" encoding="windows-1251"?>
<rss xmlns:yandex="http://news.yandex.ru" version="2.0">
<channel>
<title>Яндекс.Новости: Киев - Главные новости</title>
<link>http://news.yandex.ru/Kiev/index.html</link>
<description>Первая в России служба автоматической обработки и систематизации новостей. Сообщения ведущих российских и мировых СМИ. Обновление в режиме реального времени 24 часа в сутки.</description>
<image>
<url>http://company.yandex.ru/i/50x23.gif</url><link>http://news.yandex.ru</link><title>Яндекс.Новости</title>
</image>
<lastBuildDate>Mon, 31 Jul 2006 10:07:57 +0400</lastBuildDate>
<item>
<title>Сколько зарабатывают киевляне?</title>
<link>http://news.yandex.ru/yandsearch?cl4url=www.investor.net.ua/ru/news/info%2D8482.html&country=Russia</link>
<description>Среднемесячная заработная плата по Киеву за июнь 2006 года составляла 1784,64 грн., при этом, сравнительно с маем этого года она выросла на 8,4%. Такие данные обнародовал ... <br>Для сравнения среднемесячная заработная плата по Украине за июнь 2006 года составляет 1063,59 грн. и сравнительно с маем этого года выросла на 6%. А наименее ... <br></description>
<pubDate>Thu, 27 Jul 2006 09:20:29 +0400</pubDate>
<guid>http://news.yandex.ru/yandsearch?cl4url=www.investor.net.ua/ru/news/info%2D8482.html&country=Russia</guid>
</item>
</channel>
</rss>
Вывести одновременно содержимое всех блоков(текст между тегов итем) или указанное количество новостей. | |
|
|
|
|
|
|
|
для: Lelik
(01.08.2006 в 16:26)
| | Чего-то не очень понятно... если честно. | |
|
|
|
|
|
|
|
для: cheops
(30.07.2006 в 22:42)
| | я пробовал применить к ленте новостей на яндексе, так выводит новости только из одного подобного блока, как выводить новости из всех блоков, а потом и из заданного количества блоков | |
|
|
|
|
|
|
|
для: Lelik
(30.07.2006 в 17:05)
| | Да, для этого следует заключить тот фрагмент, который вам требуется в круглые скобки и использовать в качестве индекса массива $regs номер круглых скобок
<?php
$txt = "авда жыв авыа ыв <tag>some text in this string</tag> ваыва <tag>вы</tag> вы вы вы в";
if(preg_match("|<tag>(.+?)<\/tag>|", $txt, $regs))
{
echo $regs[1]."<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.07.2006 в 14:58)
| | >Однако если в тексте будет несколько тэгов нужно будет использовать либо модификатор
>U либо конструкцию .+? для инвертирования жадности
<?php
$txt = "авда жыв авыа ыв <tag>some text in this string</tag> ваыва <tag>вы</tag> вы вы вы в";
if(preg_match("|<tag>.+?<\/tag>|", $txt, $regs))
{
echo $regs[0]."<br>";
}
?>
|
Да, но данный код выймет текст включая тэги, а можно без них? | |
|
|
|
|
|
|
|
для: Lelik
(30.07.2006 в 12:37)
| | Если вы используете скрипт
<?php
$txt = "<tag>some text in this string</tag>";
if(preg_match("|^<tag>.+<\/tag>$|", $txt, $regs))
{
echo $regs[0]."<br>";
}
?>
|
Он найдёт соотвествие только для строки, который начинается с <tag> и заканчивается </tag>
<tag>some text in this string</tag>
|
Например, строка
<tag>some text in this string</tag> ещё чего-то
|
Не будет соответствовать регулярному выражению. Если убрать привязку к началу ^ и концу строки $, можно будет искать тэги в произвольном тексте
<?php
$txt = "авда жыв авыа ыв <tag>some text in this string</tag> ваыва вы вы вы вы в";
if(preg_match("|<tag>.+<\/tag>|", $txt, $regs))
{
echo $regs[0]."<br>";
}
?>
|
Однако если в тексте будет несколько тэгов нужно будет использовать либо модификатор U либо конструкцию .+? для инвертирования жадности
<?php
$txt = "авда жыв авыа ыв <tag>some text in this string</tag> ваыва <tag>вы</tag> вы вы вы в";
if(preg_match("|<tag>.+?<\/tag>|", $txt, $regs))
{
echo $regs[0]."<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(30.07.2006 в 12:32)
| | для начала <tag> и </tag>, но может добавиться <?xml version="1.0" encoding="UTF-8" ?> | |
|
|
|
|