Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вырезать подстроку из тегов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
energ
Отправлено: 18 Апреля, 2012 - 18:30:14
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Добрый день, имеется документ с тегами <name>Тут внутри название</name> (и таких тегов много).

Нужны простейшие функции которые вырежут все названия из этих тегов и пропишут из мне на экране в строчку Улыбка

(Отредактировано автором: 18 Апреля, 2012 - 18:30:47)

 
 Top
dzubchik
Отправлено: 18 Апреля, 2012 - 18:46:22
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




energ,теги разные?
 
 Top
EuGen Администратор
Отправлено: 18 Апреля, 2012 - 18:46:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', $sData, $rgMatches);
  2. echo(join(' ', $rgMatches[1]));

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dzubchik
Отправлено: 18 Апреля, 2012 - 18:49:23
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




EuGen, как всегда первый. А я почти сделал Недовольство, огорчение
 
 Top
energ
Отправлено: 18 Апреля, 2012 - 18:52:47
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




[quote=dzubchik]preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', $sData, $rgMatches);
echo(join(' ', $rgMatches[1]));[/quote]

Теги только наймы нужны, конечно в файле много разных тегов, но в конкретном случае интересуют именно наймы
(Добавление)
[quote=EuGen]
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', $sData, $rgMatches);
  2. echo(join(' ', $rgMatches[1]));

?[/quote]


Только не пойму куда массив со строками добавлять, вот у меня есть xml документ, он в образе url'а простого, в целом мне нужно просто его вставить и получить наймы в строку из всего xml файла
(Добавление)
[quote=dzubchik][/quote]

Лучше покажите ваш пример, я все равно не особо понимаю как этими регулярками пользоваться ))
 
 Top
EuGen Администратор
Отправлено: 18 Апреля, 2012 - 18:57:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




energ
$sData - это Ваш текст (в данном случае содержащий xml). Можете получить его, например, через file_get_contents


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
energ
Отправлено: 18 Апреля, 2012 - 19:03:17
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




EuGen пишет:
energ
$sData - это Ваш текст (в данном случае содержащий xml). Можете получить его, например, через file_get_contents


ОО все получилось! )) спасибо! )) В итоге скрипт получился такого вида:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4.  
  5. $sData= file_get_contents('url');
  6.  
  7. preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', $sData, $rgMatches);
  8.  
  9.  
  10.  
  11.  
  12. foreach ($rgMatches[1]  as $key => $value) {
  13. echo "<b>$value $key</b><br>";
  14. }
  15.  
  16.  
  17. ?>
  18.  
  19.  

(Добавление)
В целом стала еще одна проблема - фразы которые выводятся из названий, нужно чтобы они были не более 7 символов, если их больше то последние слова должны отразиться и выводиться только первые 7.

Словами могут считаться даже просто цифры или знаки даже если они имеют всего 1 символ
(Добавление)
еще бы не плохо если бы из строк вырезались кавычки - как двойные там одинарные, знаки плюсов и запятые, кончено вырезаться они должны до того как начнется проверка на количество слов в строке
(Добавление)
При том если в фразе есть такая конструкция слово-слово или слово-цыфра то это считается за 1 слово и тире тут конечно вырезать не надо, а вот скобки как раз таки не нужны
 
 Top
energ
Отправлено: 19 Апреля, 2012 - 13:25:02
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Как я понил тутнужно 2 условия с регулярками, и при их выполнении использовать еще 2 регулярки, но только я вообще не понимаю как пользоваться этими регулярками.....
 
 Top
EuGen Администратор
Отправлено: 19 Апреля, 2012 - 13:54:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. $iLength=7;
  2. preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', file_get_contents('url'), $rgMatches);
  3. $rgMatches[1]=array_map(function($mValue) use ($iLength)
  4. {
  5.    $rgTemp=array_map(function($sValue) use ($iLength)
  6.    {
  7.       return substr($sValue, 0, $iLength);
  8.    }, preg_split('/\s+/', preg_replace('/[\'\"\+,]/', '', $mValue), -1, PREG_SPLIT_NO_EMPTY));
  9.    return join(' ', $rgTemp);
  10. }, $rgMatches[1]);
  11. echo(join(" ", $rgMatches[1]));

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 19 Апреля, 2012 - 14:05:57
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Есть средства для разбора xml, зачем тут вообще регулярка?


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
energ
Отправлено: 19 Апреля, 2012 - 14:36:26
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




[quote=snikers987][/quote] Если знаешь как эффективнее - поделись, напиши свой вариант как оно должно быть
(Добавление)
EuGen пишет:
PHP:
скопировать код в буфер обмена
  1. $iLength=7;
  2. preg_match_all('/\<name[^\>]*\>(.*)\<\/name\>/Usmi', file_get_contents('url'), $rgMatches);
  3. $rgMatches[1]=array_map(function($mValue) use ($iLength)
  4. {
  5.    $rgTemp=array_map(function($sValue) use ($iLength)
  6.    {
  7.       return substr($sValue, 0, $iLength);
  8.    }, preg_split('/\s+/', preg_replace('/[\'\"\+,]/', '', $mValue), -1, PREG_SPLIT_NO_EMPTY));
  9.    return join(' ', $rgTemp);
  10. }, $rgMatches[1]);
  11. echo(join(" ", $rgMatches[1]));

?


тут какая то ошибка в синтаксисе в строке "$rgMatches[1]=array_map(function($mValue) use ($iLength)"
 
 Top
EuGen Администратор
Отправлено: 19 Апреля, 2012 - 14:44:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




energ
Работать будет на php 5.3+


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
energ
Отправлено: 19 Апреля, 2012 - 16:20:47
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




EuGen пишет:
energ
Работать будет на php 5.3+

У нас на хостинге 5.2.17 и php 5.3 говорят еще не скоро ставить будут.....
 
 Top
energ
Отправлено: 25 Апреля, 2012 - 13:52:54
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




А как вообще это вырезание лишних элементов делаться?

Можно простой пример с описанием?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB