textarea - > массив со словами и массив символов, которые между словами.

Arhimag

Новичок
textarea - > массив со словами и массив символов, которые между словами.

Здравствуйте, не могли бы вы мне дать программу которая делает следующее:
в текстареа вводишь тескт , а она из него выуживает слова и запихивает их в массив $w и то что между словами $w[1] и $w[2] записано в $d[1]
заранее спасибо

-~{}~ 12.11.06 17:08:

У меня есть свое решение этой проблемы, но оно почему-то не работает :(
вот мое решение:
файл test.php:
Код:
<form method="post" action="test2.php">
	<textarea name="text">
	</textarea> <br> 
	<input type="text" name="name"> <input type="submit">
</form>
файл test2.php:
Код:
<?php
		function in_del( $s=' ' ) {
			$true = true;
			$false = false;
			$del=', .<>!&@#$%^&*()?:;-+=_\"\'';
			if ( strpos($del, $s) == false ) {
				return 0;
			} else { return 1; }
		}
?>
<?php
		
		$code_start = false;
		$state = explode('<nl>', $_POST['text']);
		$state_length = count($state);
	//----------------------------
		
		if (isset($_POST['text'])){
			for ( $n=0; $n < $state_length; $n++) {
				echo $n;
				$i=0;
				$count=0;
				$len=strlen($state[$n])-1;
				while ( $i < $len ) {
					$k=$i;
					while ( ($i < $len) and (in_del($state[$n][$i]==1)) ) {
						$i++;
					}
					$d[$count+1]=substr($state[$n],$k,$i-$k);
					if ($i < $len) {
						$j=$i;
						while ( ($i < $len) and (in_del($state[$n][$i]==0)) ) {
							$i++;
						}
						$count++;
						$w[$count]=	substr($state[$n],$j,$i-$j);
					}
				
				}
				for ($j=1; $j < $count+1; $j++) {
					echo $w[$j]; echo '_'; echo $d[$j]; echo '<br>';					
					echo'/n';						
				}
			}	
		}	
?>
 

Фанат

oncle terrible
Команда форума
хехе.
куда ж тебе мир менять, если ты даже в таком исходнике разобраться не можешь? =)
 

Arhimag

Новичок
Автор оригинала: Фанат
хехе.
куда ж тебе мир менять, если ты даже в таком исходнике разобраться не можешь? =)
Я недавно PHP учить начал, а раньше на паскале работал. Вот написал прогу ( выше ) а она не работает, а где понять не могу.
 

Arhimag

Новичок
Я уже говорил, что отлаживал и не нашел где ошибка :( а мне её сдавать нужно будет :( помогите
 

Arhimag

Новичок
? суть в том, что мне нужно получить два массива $w и $d заполненные описанным ранее методом.
 

MadGreen

meninweb
я бы вставил пробелы между всеми словами и знаками препинания и уже потом разбил бы строку на элементы массива с разделителем "пробел"...
и уже потом разбирал бы массив на два
 

Arhimag

Новичок
Автор оригинала: MadGreen
я бы вставил пробелы между всеми словами и знаками препинания и уже потом разбил бы строку на элементы массива с разделителем "пробел"...
и уже потом разбирал бы массив на два
ну а вот в таком случае что делать?
"ВОТ 1 ПРИМЕР ! ! ! вот"
 

MadGreen

meninweb
заменить все знаки препинания на на них же, только с пробелами, и потом разбить все с помощью explode по пробелам. Это можешь для начала сделать или ждешь пока готовый код напишут?
 

Arhimag

Новичок
я пока не очень понимаю :(
В том примере будет:
"вот/пробел добавленный//два пробела изначальных/1/пробел добавленный//два пробела изначальных/ПРИМЕР/пробел добавленный//один пробел изначальный/!/пробел добавленный//один пробел изначальный/!/пробел добавленный//один пробел изначальный/!/пробел добавленный/.
И тогда не будет удовлетворять условие относительно $d и $w и $w[i+1]
 

MadGreen

meninweb
сначала забудь про итоговое условие.
сдвоенные пробелы заменяются на одинарные - в этом сложного ничего нет - str_replace ();
потом ты можешь получить массив из которого уже не сложно будет выделить то что хочешь
 

Arhimag

Новичок
Автор оригинала: MadGreen
сначала забудь про итоговое условие.
сдвоенные пробелы заменяются на одинарные - в этом сложного ничего нет - str_replace ();
потом ты можешь получить массив из которого уже не сложно будет выделить то что хочешь
но если я заменю сдвоенные пробелы на одинарные, то тогда я не смогу из этих двух массивов восстановить текст! А мне это фажно.
 

MadGreen

meninweb
Автор оригинала: Arhimag
но если я заменю сдвоенные пробелы на одинарные, то тогда я не смогу из этих двух массивов восстановить текст!
почему не сможешь? из массива слов и знаков ты не сможешь восстановить текст? или ты не знаешь, что в русском языке слова разделяются пробелами, а знаки препинания стоят перед пробелами а не после???

-~{}~ 12.11.06 23:19:

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

mak_sim2001

Новичок
н е к о т о р ы е могут и т а к в <textarea> написать, разбить по пробелам невопрос с помощью explode(), но вот потом что тыпланируешь с этим делать? Может я неправ но проще сначала по пробелам разбить а потом с помощью конструкции foreach по каждому элементу масива пройтись регулярками и на два новых масива один слова, другой знаки припинания и пробелы (там где ниче не нашел просто элемент масива = пробел) при таком подходе помоему текст всегда сможешь востановить.
$state = explode('<nl>', $_POST['text']);
невьехал что это??? Может так???
$state = explode(' ', $_POST['text']);
 

MadGreen

meninweb
mak_sim2001
могут и что?
если количество элементов в обоих массивах будет одинаковым, в одном "слова", в другом знаки препинания или пустые элементы - большая проблема получить исходный текст??? даже тот что ты соизволил придумать

то что ему писали выше такой текст учтет
 
Сверху