|
|
|
| Разделителем массива должна быть точка в тексте. Однако не всякая точка, а лишь та, которой предшествует не менее трех букв (так, что бы разделителем не явилась точка в сокращениях «г-н.», «д-р.», «др.» или «тов.»).
Как сделать такое хитрое преобразование? | |
|
|
|
|
|
|
|
для: Владимир55
(19.04.2011 в 14:36)
| | думаю проще всего через регулярные выражения заменить нужные вам точки на спец.знак и использовать его как разделитель | |
|
|
|
|
|
|
|
для: Владимир55
(19.04.2011 в 14:36)
| | Можно начать отталкиваться от следующего скрипта
<?php
$text = "Разделителем массива должна быть точка в ".
"тексте. Однако не всякая точка, а лишь та, ".
"которой предшествует не менее трех букв ".
"(так, что бы разделителем не явилась точка ".
"в сокращениях «г-н.» или «др.»). ".
"Разделителем массива должна быть точка в ".
"тексте. Однако не всякая точка, а лишь та, ".
"которой предшествует не менее трех букв ".
"(так, что бы разделителем не явилась точка ".
"в сокращениях «г-н.» или «др.»).";
$pattern = "|(?<=[а-я]{3})\.|is";
$arr = preg_split($pattern, $text);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(19.04.2011 в 14:47)
| | Это просто замечательно! Спасибо! Я два дня корпел - а тут за минуту можно всё сделать.
Однако хотелось бы для корректности еще ужесточить критерий выбора нужной точки, добавив к имеющимся критериям отбора такое условие - правее точки после пробела (пробелов) имеется любая буква верхнего регистра (рус./лат.) или цифра. | |
|
|
|
|
|
|
|
для: Владимир55
(19.04.2011 в 15:42)
| | Можно изменить скрипт следующим образом
<?php
$text = "Разделителем массива должна быть точка в ".
"тексте. однако не всякая точка, а лишь та, ".
"которой предшествует не менее трех букв ".
"(так, что бы разделителем не явилась точка ".
"в сокращениях «г-н.» или «др.»). ".
"Разделителем массива должна быть точка в ".
"тексте. Однако не всякая точка, а лишь та, ".
"которой предшествует не менее трех букв ".
"(так, что бы разделителем не явилась точка ".
"в сокращениях «г-н.» или «др.»).";
$pattern = "|(?<=[а-яА-Яa-zA-Z]{3})\.(?=[\s]+[А-ЯA-Z])|s";
$arr = preg_split($pattern, $text);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(19.04.2011 в 16:07)
| | Превосходно! Большое спасибо! | |
|
|
|