|
|
|
| Добрый день!
Имеется строка
<li><span>Сценарий:</span> <a href="http://">Имя сценариста</a><br><span>Продюсер:</span> <a href="http://">Имя продюсера</a>, <a href="http://">Имя второго продюсера</a><br><span>Оператор:</span> <a href="http://">Имя оператора</a><br>
Требуется выдрать из текста только "Имя сценариста". Единственное до чего дошел - это такой шаблон
$pattern = '/<span>Сценарий:.*<a.*>(.*)<\/a><br>/';
Функция сейчас возвращает почему-то "Имя оператора.
Помогите пожалуйста получить требуемый результат - голову уже сломал :-(
Заранее благодарен!!! | |
|
|
|
|
|
|
|
для: lusher
(22.11.2007 в 12:04)
| | Как то так
<pre>
<?php
$text='<li><span>Сценарий:</span> <a href="http://">Имя сценариста</a><br><span>Продюсер:</span> <a href="http://">Имя продюсера</a>, <a href="http://">Имя второго продюсера</a><br><span>Оператор:</span> <a href="http://">Имя оператора</a><br>';
preg_match_all("|Сценарий:</span>[^>]+>(.+?)</a>|is", $text, $out);
print_r ($out);
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(22.11.2007 в 12:11)
| | К сожалению не помогло
Текст ошибки
Parse error: syntax error, unexpected T_IF in Z:\home\parser\www\getDescriptions.php on line 48
Первый раз вижу столь информативное сообщение :-)) Куда следует копать дальше?
PS Может быть Вы знаете, где можно найти хорошее описание регулярных выражений и работы с ними на пхп? | |
|
|
|
|
|
|
|
для: lusher
(22.11.2007 в 12:36)
| | >Может быть Вы знаете, где можно найти хорошее описание регулярных выражений и работы с ними на пхп?
Если в инете то для начала можно посмотреть на этом форуме
http://www.softtime.ru/bookphp/gl7_1.php
Насчет ошибки это она у вас где то в скрипте на 48 строке
Если можете прикрепите файл, посмотрим в чем ошибки
>Первый раз вижу столь информативное сообщение :-)) Куда следует копать дальше?
Не очень понятен вопрос | |
|
|
|
|
|
|
|
для: Faraon
(22.11.2007 в 12:55)
| | Выложить весь код не представляется возможным. А вот кусочек на который идет ругань легко
$pattern = "|Сценарий:</span>[^>]+>(.+?)</a>|is"
if(preg_match_all($pattern , $line, $matches)) //48 строка. Вот тут и возникает ошибочка.
{
echo('Сценарий: '. $matches[1] . '<br>');
}
|
PS Спасибо за урлик. Почитаем | |
|
|
|
|
|
|
|
для: lusher
(22.11.2007 в 13:11)
| | После
$pattern = "|Сценарий:</span>[^>]+>(.+?)</a>|is"
|
точку с запятой поставьте ;
PS внимательнее надо быть :) | |
|
|
|
|
|
|
|
для: Faraon
(22.11.2007 в 13:17)
| | Спасибо огроменное!!! Помогло.
Только возник такой моментик:
Например в строке у меня может быть несколько продюсеров. А вытаскивает только одного. Можно получить всех продюсеров?
<li><span>Сценарий:</span> <a href="http://">Имя сценариста</a><br><span>Продюсер:</span> <a href="http://">Имя продюсера</a>, <a href="http://">Имя второго продюсера</a><br><span>Оператор:</span> <a href="http://">Имя оператора</a><br>
|
| |
|
|
|
|
|
|
|
для: lusher
(22.11.2007 в 15:19)
| | После preg_match_all поставьте цикл
for($i=0;$i<count($matches[1]);$i++){
echo 'Сценарий: '. $matches[1][$i] . '<br>';
}
|
или
foreach ($matches[1] as $val){
echo 'Сценарий: '. $val. '<br>';
}
|
| |
|
|
|
|
|
|
|
для: Faraon
(22.11.2007 в 15:23)
| | Не получается. Возвращает только текст из последней ссылки :-( | |
|
|
|
|
|
|
|
для: lusher
(23.11.2007 в 00:18)
| | Приведите этот кусок кода как вы делаете | |
|
|
|
|
|
|
|
для: Faraon
(23.11.2007 в 08:47)
| |
$pattern = "|Сценарий:</span>[^>]+>(.+?)</a>|is";
if(preg_match_all($pattern , $line, $matches))
{
//echo('Сценарий: '. $matches[1][0] . '<br>');
//print_r($matches);
foreach ($matches[1] as $val)
{
echo 'Сценарий: '. $val . '<br>';
}
}
|
| |
|
|
|
|
|
|
|
для: lusher
(23.11.2007 в 12:05)
| | Так подождите! Вам нужен был сценарист!
А теперь вы говорите насчет прдюсеров
Поконкретнее скажите что вам нужно вытащить? | |
|
|
|
|
|
|
|
для: Faraon
(23.11.2007 в 12:53)
| | Цель в том, чтобы выбрать все имена всех "специалистов", которые работали над созданием фильма.
В данном примере - это сценаристы. Проблема в том, что сценаристов может быть несколько.
Не важно кого вытаскивать сценаристов или продюсеров - все они выводятся одинаково.
Если допилить код, чтобы он вытаскивал всех сценаристов, то для остальных "специалистов" код я смогу поправить. Надеюсь :-) | |
|
|
|
|
|
|
|
для: lusher
(23.11.2007 в 13:02)
| | Тогда поступим так
<?
$line='<li><span>Сценарий:</span><a href="http://">Имя сценариста 0</a><br><span>Продюсер:</span> <a href="http://">Имя продюсера</a>, <a href="http://">Имя второго продюсера</a><br><span>Оператор:</span> <a href="http://">Имя оператора</a><br>';
$pattern = "#Продюсер:</span>[^>]+>(.+?)<br>#is";
if(preg_match_all($pattern , $line, $matches))
{
foreach ($matches[1] as $val)
{
echo 'Продюсер: '. strip_tags($val) . '<br>';
}
}
?>
|
Или так для выбора сразу всех участников
<?
$line='<li><span>Сценарий:</span><a href="http://">Имя сценариста 0</a><br><span>Продюсер:</span> <a href="http://">Имя продюсера</a>, <a href="http://">Имя второго продюсера</a><br><span>Оператор:</span> <a href="http://">Имя оператора</a><br>';
$pattern = "#<span>(.+?)</span>[^>]+>(.+?)<br>#is";
if(preg_match_all($pattern , $line, $matches))
{
for($i=0;$i<count($matches[1]);$i++){
echo $matches[1][$i] .' '.strip_tags($matches[2][$i]). '<br>';
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(23.11.2007 в 13:39)
| | Faraon, большое спасибо за Вашу помощь! Вы мне очень помогли!!!
В конечном итоге я взял Ваш предпоследний вариант и чуть допилил. Все работает как хорошие часы :-))
PS Может быть посоветуете хорошую ссылку или книгу по регулрным выражениям?
В той ссылке, что мне дали нет тех "фишек", которые Вы использовали при написании паттернов.
Еще раз спасибо!! | |
|
|
|
|
|
|
|
для: lusher
(23.11.2007 в 18:25)
| | Есть лишь одна исчерпывающая книга. Дж.Фридл. | |
|
|
|
|
|
|
|
для: lusher
(23.11.2007 в 18:25)
| | Trianon уже сказал, чуть выше | |
|
|
|
|
|
|
|
для: lusher
(23.11.2007 в 18:25)
| | Всем спасибо!
Читаем-с :-) | |
|
|
|