Проблема с регулярными выражениями. Запутался...

denisOg

Новичок
Ребята подскажите. Запутался с регулярными выражениями. Не могу найти по шаблону...
Ребята помогите разобраться с регулярными Выражениями.
Есть не большие сложности.....

PHP:
//текст в котором буду искать шаблонные строки
$data="Машина Apple I изначально предлагалась по «привлекательной» стартовой цене в 666.66 долларов США (через год её снизят до 475 долларов) и представляла собой готовую печатную плату с уже смонтированными компонентами. Сборкой занимались Возняк и Джобс, руководство написал Рональд Уэйн. К ней пользователь должен был подключить клавиатуру, дисплей (в этой роли мог выступать обычный телевизор), магнитофон (для работы с которым позже за дополнительные 75 долларов предлагалось приобрести ещё одну плату), блок питания и «облачить» все это в корпус. Разумеется, ни магазинов по продаже комплектующих и программного обеспечения, ни самих персональных компьютеров, кроме, пожалуй, Xerox Alto и IBM 5100 (о нем мы поговорим позже), а также MITS Altair 8800 и его прямого конкурента IMSAI 8080, тогда практически не было. Так что это почти наверняка означало «сделай сам». За полтора года (по октябрь 1977) было продано около двухсот машин. Теперь все они являются раритетами и представляют большую коллекционную ценность: до сегодняшнего дня в целости и сохранности дожило не более пятидесяти оригинальных Apple I.

Между прочим, сегодня любой желающий может пройти по пути Возняка и Джобса и, с паяльником наперевес, собрать полноценный аналог Apple I ";
[php]
1. Найти любые цифры и записать их в массив.

[php]$pattern="([0-9.\])+";
$result=ereg($pattern,$data,$array_result);
echo "RESULT-".$result."<br>";
print_r($array_result);
Результат:
RESULT-6
HTML:
Array ( [0] => 666.66 [1] => 6 )
Почему найдено 6-ть, а в массиве только 2 ?
И ввообще их на самом деле совпадений должно быть...

2. Найти подряд пять латинских букв. Регистр не учитывать. Записать в Массив.
PHP:
$pattern="([a-Z]){5}";
$result=ereg($pattern,$data,$array_result);
echo "RESULT-".$result."<br>";
print_r($array_result);
Результата вообще нет. :(

3. Найти все фамилии и записать их в массив.
PHP:
$pattern="([А-Я][а-Я]+)+";
$result=ereg($pattern,$data,$array_result);
echo "RESULT-".$result."<br>";
print_r($array_result);
Результата нет

4. И итоговый вопрос, ради которого стал вспоминать-это обработка поиска:
4а.Найти: 100 любых символов до + нужное слово+100 символов после.
4б. Убрать теги из этого выражения.
4в. Добавить "......" с обоих сторон.
4г Найти и выделить нужное слово желтым фоном.
Это все для вывода результатов поиска.

Вот возникли трудности с регулярными выражениями....
 

workOnFood

Новичок
И вообще почитайте литературу по регуляркам и по php в целом, или выспитесь чтоли=))
PHP:
preg_match_all("/[0-9\.]+/",$data,$mass);
var_dump($mass);
Только лишние точки нужно будет отсеять.
 

denisOg

Новичок
И вообще почитайте литературу по регуляркам и по php в целом, или выспитесь чтоли=))
PHP:
preg_match_all("/[0-9\.]+/",$data,$mass);
var_dump($mass);
Только лишние точки нужно будет отсеять.
Спасибо за ответ. Только начал изучать/вспоминать регулярные выражения. Хотя и мало сплю тоже=)
 

denisOg

Новичок
Вот что на юзал, оцените ребята, насколько верно:
PHP:
//$data- это некоторый текст.
1. поиск цифр.
PHP:
preg_match_all("/[0-9\.]+/",$data,$mass);
В тексте есть цифры с точками. Чтобы избавить от точек в найденном массиве, я перегоняю из одного в массива в другой все, кроме точек:
PHP:
$tochka=".";
foreach($mass[0] as $key=>$value){
if(strcmp($value,$tochka )){
$mass2[]=$value;
}}
2.пять подряд латинских букв в массиве
PHP:
preg_match_all("#[a-z]{5}#i",$data,$mass3,PREG_SET_ORDER);
3. ищу фамилии
PHP:
preg_match_all("#[А-Я][а-я]+#",$data,$mass4,PREG_SET_ORDER);
4.найти товары и заменить их ссылками товар.com
PHP:
$pattern="#([A-Z][a-z]+)#";
$replacement="<a href='http://www.\\1.com'>\\1</a>";
$data2=preg_replace($pattern,$replacement,$data);
echo $data2;
5. Самое интересное. Найти в тексте слово. Взять с этим словом от 0 до 100 символов справа и слева, потом добавить убрать теги, добавить многоточия и выделить желтым фоном. Это для результатов поиска:
PHP:
$search="аналог";
$pattern1="#[a-z0-9а-я\s,.:-—<>\/]{0,200}\b".$search."\b[a-z0-9а-я\s,.:-—<>\/]{0,200}#i";
preg_match($pattern1,$data,$mass6);
$mass6[0]=strip_tags($mass6[0]);
$mass6[0]="....".$mass6[0]."....";
$pattern="#(".$search.")#i";
$replacement="<span style='background-color:#000000;'>\\1</span>";
$result_str=preg_replace($pattern,$replacement,$mass6[0]);
echo $result_str;
Вопрос: в
PHP:
$pattern1="#[a-z0-9а-я\s,.:-—<>\/]{0,200}\b".$search."\b[a-z0-9а-я\s,.:-—<>\/]{0,200}#i";
хотел упростить шаблон в
PHP:
 [a-z0-9а-я\s,.:-—<>\/]
но ни [[:alnum:]] ни \w не выдавали результат. В чем проблема может быть?
:)
 
Сверху