[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с регуляркой
Painbot

<?php
$string = "Ля-Ля-Ля
<?php

$id = Array(41743, 42026, 41740, 41741, 41747, 41748);
Ля-Ля-Ля"
;


$pattern = "/^\n$id\s{0,1}=\s{0,1}Array([0-9]+);\s{0,1}$/i";
$replacement = "$id = Array(123, 34535, 1345, 1111);";
echo preg_replace($pattern, $replacement, $string);
?>



$id = Array(41743, 42026, 41740, 41741, 41747, 41748); - вот для строки такого вида, то есть количество элементов может меняться, а вот элементы за скобкками не меняются ни когда + нужно искать полностью такие строки для полной замены..."<?php" - всегда встречается до искомой строки



Спустя 10 часов, 37 минут, 26 секунд (5.04.2011 - 09:42) Painbot написал(а):
Написал сам))
 '/^\$id\s{0,2}\=\s{0,2}Array\(([0-9]+\, ){1,100}[0-9]+\);$/'

Спустя 23 минуты, 34 секунды (5.04.2011 - 10:06) Ulan написал(а):
очень узко подогнана регулярка под строку поиска. достаточно поставить лишний пробел и она не совпадет. например, если перед $ будет табуляция.

Спустя 12 минут, 48 секунд (5.04.2011 - 10:18) Painbot написал(а):
#^(\$id\s{0,2}\=\s{0,2}Array\(([0-9]+\,\s{0,2}){1,100}[0-9]+\);)$#im


вот так добавил, но чето все равно не ищет((( если строка одна то ищет если -вот так "Ля-Ля-Ля
<?php
$id = Array(41743, 42026, 41740, 41741, 41747, 41748);
Ля-Ля-Ля" или вот так "Ля-Ля-Ля <?php $id = Array(41743, 42026, 41740, 41741, 41747, 41748); Ля-Ля-Ля"
все равно не ищет, в чем может быть проблема?

Спустя 12 минут, 49 секунд (5.04.2011 - 10:31) Painbot написал(а):
Тупанул)) /(\$id\s{0,2}\=\s{0,2}Array\(([0-9]+\,\s{0,2}){1,100}[0-9]+\)wink.gif/

Спустя 13 минут, 5 секунд (5.04.2011 - 10:44) Ulan написал(а):
у тебя стоит привязка к началу и концу строки. потому если пред $ или после ); есть какие либо символы - поиск не совпадет.
я бы сделал так
/\$id\s*=\s*Array\s*\(.*?\);/si

или так, если массивы только с цифрами
/\$id\s*=\s*Array\s*\([0-9,\s\n]+\);/si

Спустя 22 часа, 18 минут, 21 секунда (6.04.2011 - 09:03) Painbot написал(а):
Ulan - спасибо большое - сегодня утро осознал, что моя регулярка не ищет массивы с одной цифрой - тоесть такие -
$id = Array(41743); , а ваша ищет)))))

Спустя 46 минут, 58 секунд (6.04.2011 - 09:50) Ulan написал(а):
это потому, что у тебя запятая обязательно должна присутствовать после цифр.
Быстрый ответ:

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