Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Регулярное выражение - вырезать все кроме указанных в масиве слов

Ответить
Настройки темы
Регулярное выражение - вырезать все кроме указанных в масиве слов

Ветеран


Сообщения: 575
Благодарности: 8


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: venuko
Дата: 29-01-2009
Есть переменная в ней хранятся все страны:

PHP код: Выделить весь код

$country "Австралия, Андора, Австрия, Россия, Украина, Германия"

и т.д. все страны.

Собственно в чем вопрос, есть код который выводит контент на страницу, контент выводит к примеру переменная $content далее мы вырезаем из контента все теги:

PHP код: Выделить весь код

$content=strip_tags($content); 


дальше нужно из этого контента вырезать все, кроме одного слова - название страны (в контенте всего один раз встречается любое из названия стран), если оно входит в список $country и вывести название страны на экран!

Подскажите, плиз, буду признателен, спасибо!

Отправлено: 16:05, 29-01-2009

 

Ветеран


Сообщения: 575
Благодарности: 8

Профиль | Отправить PM | Цитировать


хм, эта задача сложна?

Отправлено: 17:14, 29-01-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Deadooshka


Сообщения: 2522
Благодарности: 693

Профиль | Отправить PM | Цитировать


у вас логика непонятная... зачем ради одного слова вырезать теги и все остальное?

Отправлено: 18:48, 29-01-2009 | #3


Deadooshka


Сообщения: 2522
Благодарности: 693

Профиль | Отправить PM | Цитировать


вам нужно привести примерно к такому виду (список стран вставить в шаблон, предварительно обработав)
PHP код: Выделить весь код

if(preg_match('/Австралия|Андора|Австрия/i'$content$matches)) echo $matches[0]; 



Отправлено: 19:32, 29-01-2009 | #4


Ветеран


Сообщения: 575
Благодарности: 8

Профиль | Отправить PM | Цитировать


Не пойму, в чем ошибка:

PHP код: Выделить весь код

$country "Австралия|Андора|Австрия";


$content="Здесь <i>описание</i> страны Австралия. Также <b>другой</b> тест и так и далее!";
$content=strip_tags($content);

if(
preg_match('/$country/i'$content$result))

echo 
$result[0]; 

Подскажите, плиз

Отправлено: 20:56, 29-01-2009 | #5


Ветеран


Сообщения: 575
Благодарности: 8

Профиль | Отправить PM | Цитировать


нашел ошибку, но теперь проблема в другом:

PHP код: Выделить весь код

$country 'Австралия|Андора|Австрия';


$content="Здесь <i>описание</i> страны Австралиядский. Также <b>другой</b> тест и так и далее!";
$content=strip_tags($content);

if(
preg_match("/$country/i"$content$result))

echo 
$result[0]; 

В контенте слово Австралиядский, а скрипт результат выдает Австралия, это неправильно, так нужно точное вхождение слова, а не его какое-либо склонение.

все понял, нужно было \b добавить

PHP код: Выделить весь код

if(preg_match("/\$country\b/i"$content$result)) 



Отправлено: 21:15, 29-01-2009 | #6


Ветеран


Сообщения: 575
Благодарности: 8

Профиль | Отправить PM | Цитировать


В чем может быть проблема, скрипт работает, но если мы не указали в переменной $country какую то страну или её вообще нет в контенте, то эта информация в цикле не выводится как сделать так, чтобы если есть страна то пусть выводится, если нет такой страны в списке, то выводить надпись "Не известно":

PHP код: Выделить весь код

while ($row $db->sql_fetchrow($result)) {

$id $row['id'];
$title  stripslashes($row['title']);
$article  stripslashes($row['article']);

$country 'Франция|Германия|США|Россия';
$content $article;
$content=strip_tags($content);
if(
preg_match("/$country/i"$content$result2))

echo 
"<p>$title";
echo 
"  - $result2[0]</a>";
echo 
"</p>";




Отправлено: 21:36, 29-01-2009 | #7


Ветеран


Сообщения: 575
Благодарности: 8

Профиль | Отправить PM | Цитировать


А этот вариант, правильней?

PHP код: Выделить весь код

while ($row $db->sql_fetchrow($result)) { 

$id $row['id']; 
$title  stripslashes($row['title']); 
$article  stripslashes($row['article']); 

$country 'Франция|Германия|США|Россия'
$content $article
$content=strip_tags($content); 
    if(
preg_match("/$country/i"$content$result2)) {
    echo 
"<p>$title</p>"
    echo 
"<p>$result2[0]</p>"
    } else {
    echo 
"<p>$title</p>"
    echo 
"<p>$article</p>"







Отправлено: 21:58, 29-01-2009 | #8


Deadooshka


Сообщения: 2522
Благодарности: 693

Профиль | Отправить PM | Цитировать


Цитата venuko:
все понял, нужно было \b добавить »
не, тогда подмаску нужно юзать
PHP код: Выделить весь код

if(preg_match("/({$country})\b/i"$content$result))

{
    echo 
"<p>$title</p>";  
    echo 
"<p>$result[0]</p>";  // или $result[1]
}
else 
// если страна не найдена

    echo 
"<p>$title</p>";  
    echo 
"<p>$article</p>";  


не понятно, зачем у вас strip_tags и stripslashes (и без этого будет работать)...

+ нужно позаботиться чтобы в $country не было служебных символов (preg_quot уже не прокатит)...

Последний раз редактировалось Sham, 30-01-2009 в 09:53. Причина: ошибочка


Отправлено: 03:05, 30-01-2009 | #9


Ветеран


Сообщения: 575
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Sham:
не, тогда подмаску нужно юзать »
подмаска, это это?

Цитата Sham:
+ нужно позаботиться чтобы в $country не было служебных символов (preg_quot уже не прокатит)... »
PHP код: Выделить весь код

({$country}) 


Каких служебных символов, точек, запятых и т.д.?

Отправлено: 08:11, 30-01-2009 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Регулярное выражение - вырезать все кроме указанных в масиве слов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Регулярное выражение: вырезать данные между тегами venuko Вебмастеру 6 04-06-2009 16:59
Регулярное выражение для проверки денежной суммы BuilderMan Вебмастеру 9 23-08-2006 11:24
регулярное выражение на пхп. Drem Вебмастеру 13 22-07-2006 00:16
Регулярное выражение benya Вебмастеру 27 26-08-2005 14:34
как быстрее и менее ресурсоемкей создать регулярное выражение E-mail Вебмастеру 3 13-02-2005 11:24




 
Переход