[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение..доработать?
phpsc
Есть регулярное выражение:
preg_match_all("/(?<=watch\?v\=)[\D0-9]{0,70}(?=\"\>)/",$page,$m);


нужно добавить:
если результат содержит слово title то вытаскиеваем, если нет то не вытаскиваем.



Спустя 28 минут, 47 секунд (9.02.2011 - 02:39) Invis1ble написал(а):
phpsc
Интересный подход....
Цитата
нужно добавить

Кому нужно? Добавь

Спустя 16 минут, 49 секунд (9.02.2011 - 02:56) phpsc написал(а):
Цитата (Invis1ble @ 8.02.2011 - 23:39)
phpsc
Интересный подход....
Цитата
нужно добавить

Кому нужно? Добавь

:-(
это вопрос был, конечно же. Я уже все перепробовал и мануалы пееречитал.

Спустя 4 минуты, 12 секунд (9.02.2011 - 03:00) Invis1ble написал(а):
что-то мне подсказывает, что ты тут сильно перемудрил с регуляркой. Напиши, какие могут быть исходные данные и что в итоге ты хочеь получить, тогда будем думать.

Спустя 47 минут, 35 секунд (9.02.2011 - 03:48) phpsc написал(а):
с помощью моей регулярки получаем следующий массив:
Цитата
          [0] => dIOH8Trfas4" class="ux-thumb-wrap result-item-thumb
            [1] => dIOH8Trfas4" title="Britney Spears - My Prerogative
            [2] => DoP3C76ioTU" class="ux-thumb-wrap result-item-thumb
            [3] => DoP3C76ioTU" title="Britney Spears - Womanizer - Parody
            [4] => kHmvkRoEowc" class="ux-thumb-wrap result-item-thumb
            [5] => kHmvkRoEowc" title="LEAVE BRITNEY ALONE!
            [6] => rhCkfQ5nzaI" class="ux-thumb-wrap result-item-thumb
            [7] => rhCkfQ5nzaI" title="Womanizer- Britney Spears
            [8] => leRlViWiynU" class="ux-thumb-wrap result-item-thumb
            [9] => uCTFXrMmZB0" class="ux-thumb-wrap result-item-thumb
            [10] => 35c1knqjDsU" class="ux-thumb-wrap result-item-thumb
            [11] => aYywiQ3-6To" class="ux-thumb-wrap result-item-thumb
            [12] => aYywiQ3-6To" title="Pepsi - Britney Spears (Commercial)
            [13] => LefQdEMJP1I" class="ux-thumb-wrap result-item-thumb
            [14] => GJSm_QMO6zA" class="ux-thumb-wrap result-item-thumb
            [15] => GJSm_QMO6zA" title="Britney Spears - Hold It Against Me (Audio)
            [16] => IlV7RhT6zHs" class="ux-thumb-wrap result-item-thumb
            [17] => u-UJQGwzyxo" class="ux-thumb-wrap result-item-thumb
            [18] => u-UJQGwzyxo" title="Britney Spears Everytime Uncut (720p HD)
            [19] => baUx42qs1xU" class="ux-thumb-wrap result-item-thumb
            [20] => baUx42qs1xU" title="Letterman - Britney Spears Top Ten List
            [21] => jBMMc3QAWCs" class="ux-thumb-wrap result-item-thumb
            [22] => jBMMc3QAWCs" title="britney spears stoned
            [23] => tM2nZSVcmwY" class="ux-thumb-wrap result-item-thumb
            [24] => Zd6sVSWdJzs" class="ux-thumb-wrap result-item-thumb
            [25] => qUFu5bHjcAY" class="ux-thumb-wrap result-item-thumb
            [26] => qUFu5bHjcAY" title="Britney Spears-Radar
            [27] => 4Rc4aRoRaqY" class="ux-thumb-wrap result-item-thumb
            [28] => s25OMP4Ww6Y" class="ux-thumb-wrap result-item-thumb
            [29] => s25OMP4Ww6Y" title="Britney Spears - Boys
            [30] => W-qJaow1Kf0" class="ux-thumb-wrap result-item-thumb
Нужно отобрать только те элементы в которых есть слово title.

Спустя 6 минут, 41 секунда (9.02.2011 - 03:54) inpost написал(а):
У тебя идёт общим, ты оставь всё как есть, разбей только на 2 части. А по центру добавь title

Спустя 17 минут, 15 секунд (9.02.2011 - 04:12) Invis1ble написал(а):
phpsc
а попробуй так:
preg_match_all("/(?<=watch\?v\=)(?=.*?\" title=\".*?)[\D0-9]{0,70}(?=\"\>)/",$page,$m);

а вобще, ты не показал текст, откуда ты все это выдираешь. Мне кажется, можно гораздо проще регулярку составить.

Спустя 2 часа, 45 минут, 53 секунды (9.02.2011 - 06:58) phpsc написал(а):
preg_match_all("/(?<=watch\?v\=)[\D0-9]{0,70}(?=\"\>)/",$page,$m);

получаем:
       [0] => dIOH8Trfas4" class="ux-thumb-wrap result-item-thumb
[1] => dIOH8Trfas4" title="Britney Spears - My Prerogative
[2] => DoP3C76ioTU" class="ux-thumb-wrap result-item-thumb
[3] => DoP3C76ioTU" title="Britney Spears - Womanizer - Parody
[4] => kHmvkRoEowc" class="ux-thumb-wrap result-item-thumb
[5] => kHmvkRoEowc" title="LEAVE BRITNEY ALONE!
[
6] => rhCkfQ5nzaI" class="ux-thumb-wrap result-item-thumb
[7] => rhCkfQ5nzaI" title="Womanizer- Britney Spears
[8] => leRlViWiynU" class="ux-thumb-wrap result-item-thumb
[9] => uCTFXrMmZB0" class="ux-thumb-wrap result-item-thumb
[10] => 35c1knqjDsU" class="ux-thumb-wrap result-item-thumb
[11] => aYywiQ3-6To" class="ux-thumb-wrap result-item-thumb
[12] => aYywiQ3-6To" title="Pepsi - Britney Spears (Commercial)
[
13] => LefQdEMJP1I" class="ux-thumb-wrap result-item-thumb
[14] => GJSm_QMO6zA" class="ux-thumb-wrap result-item-thumb
[15] => GJSm_QMO6zA" title="Britney Spears - Hold It Against Me (Audio)
[
16] => IlV7RhT6zHs" class="ux-thumb-wrap result-item-thumb
[17] => u-UJQGwzyxo" class="ux-thumb-wrap result-item-thumb
[18] => u-UJQGwzyxo" title="Britney Spears Everytime Uncut (720p HD)
[
19] => baUx42qs1xU" class="ux-thumb-wrap result-item-thumb
[20] => baUx42qs1xU" title="Letterman - Britney Spears Top Ten List
[21] => jBMMc3QAWCs" class="ux-thumb-wrap result-item-thumb
[22] => jBMMc3QAWCs" title="britney spears stoned
[23] => tM2nZSVcmwY" class="ux-thumb-wrap result-item-thumb
[24] => Zd6sVSWdJzs" class="ux-thumb-wrap result-item-thumb
[25] => qUFu5bHjcAY" class="ux-thumb-wrap result-item-thumb
[26] => qUFu5bHjcAY" title="Britney Spears-Radar
[27] => 4Rc4aRoRaqY" class="ux-thumb-wrap result-item-thumb
[28] => s25OMP4Ww6Y" class="ux-thumb-wrap result-item-thumb
[29] => s25OMP4Ww6Y" title="Britney Spears - Boys
[30] => W-qJaow1Kf0" class="ux-thumb-wrap result-item-thumb

А нужно получить только строки в которых есть title (посмотрите на результат). Или удалить строки в которых слово class).

Может это можно сделать дополнительным перебором массива и какой-либо функцией?

Спустя 44 минуты, 56 секунд (9.02.2011 - 07:42) Invis1ble написал(а):
не, ну я смотрю ты упорно не хочешь исходный текст показывать.... боишься чего? :D
Цитата
Может это можно сделать дополнительным перебором массива и какой-либо функцией?

preg_match_all("/(?<=watch\?v\=)[\D0-9]{0,70}(?=\"\>)/",$page,$ms);
foreach ($ms[0] as $k => $m)
if (!preg_match('#.*?" title=".*?#', $m))
unset($ms[0][$k]);

должно работать, если я конечно с индексами ниче не напутал )

Спустя 40 минут, 22 секунды (9.02.2011 - 08:23) phpsc написал(а):
Цитата (Invis1ble @ 9.02.2011 - 04:42)
не, ну я смотрю ты упорно не хочешь исходный текст показывать.... боишься чего? :D

)))

Добавил так:
    $count=count($mas[0]);
for ($i=0;$i<$count;$i++){
if (strpos($mas[0][$i],"title")==true) $mas_result[]=$mas[0][$i];
}

echo "<pre>";
print_r($mas_result);
echo "</pre>";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.