Поиск слов, содержащих символ.

platun

Новичок
Поиск слов, содержащих символ.

Вообщем, проблема:

В тексте (допустим: "рараапра% рапрпа рпар па%аы"), найти все слова содержащие символ % и записать их в файл...

Не могу ни как сообразить...
Подскажите плжайлуста!
 

platun

Новичок
sakon, А как с помощью их это осуществить? То есть я знаю для чего они, но не могу сообразить как сделать...

explode, создаст массив, разделитель пробел...
strpos, тут причём?
Блин, вообще запутался..........
 

sakon

П..и.н..ок
PHP:
<?php
$text = 'рараапра% рапрпа рпар па%аы';
$sise = '%';
$arr_text = explode (' ',$text);
foreach ($arr_text as $arr)
{
    if(strpos($arr,$sise) === false)
    {
         echo 'В слове '.$arr.' символ '. $sise.'ненайден';
    }
    else
    {
         echo 'В слове '.$arr.' символ '. $sise.'найден';
    }
}
?>
 

white phoenix

Новичок
PHP:
$string = 'bgjgfd% haxsxk dh%fw uwjkygs';
$sub = '%';
preg_match_all('~\S*'.preg_quote($sub).'\S*~',$string,$matches);
var_dump($matches[0]);
/*
array(2) {
  [0]=>
  string(7) "bgjgfd%"
  [1]=>
  string(5) "dh%fw"
}
*/
Imho, так лучше т.к. символ новый строки тоже как разделитель воспринимается.
 

sakon

П..и.н..ок
white phoenix
Господь с тобой! Он с элементарными вещами пока разобраться не может, а ты ему реги предлогаешь...
 

platun

Новичок
А я вот так сделал, почти как у тебя, sakon. Но у white phoenix, действительно лучше.

$page = file_get_contents("yyy.html");
$rez = explode(" ", $page);
$size = count($rez);
foreach($rez as $no => $ur)
{
if (ereg ("^.+%*", $ur))
echo "$ur<br>";
}

Спасибо, вам! Всё, разобрался!
 

white phoenix

Новичок
platun
[m]preg[/m] лучше чем [m]ereg[/m].
> ereg ("^.+%*", $ur)
Бредовое выражение. Можно заменить на strlen($ur) > 0.
Думаю ты хотел написать ereg ("^.+%", $ur), без '*', это придает хоть какой-то смысл. Смысл вот какой: строка должна состоять из двух и более символов, и в ней должен быть символ '%'.
 

antono

Новичок
Есть проще:
substr_count
Подсчитывает количество вхождений подстроки в строке.
 

antono

Новичок
$r = explode(" ", 'рараапра% рапрпа рпар па%аы');
for ($i=0; $i<sizeof($r); $i++) {
if (substr_count($r[$i], '%') {запись слова $r[$i] в файл}
}

примерно так
 

white phoenix

Новичок
antono
1. Чем отличается от варианта sakon?
2. На кой нужен [m]substr_count[/m]? Достаточно [m]strpos[/m].
 

antono

Новичок
В принципе незачем, но я всегда так делаю. Для распарсивания XML часто приходится к такому прибегать.
Короче я не утверждаю что мой вариант лучше, он тожеимеет право на жизнь :)
 
Сверху