|
|
|
| Как обрезать текст до 3 встречающейся в нем точке? Спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 13:15)
| | Первое, что в голову пришло регуляркой
<?php
$text="text. text2. text3. text4";
$text = preg_replace("#[^\.]*\.#s",'',$text, 3);
print $text;
?>
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 13:41)
| | Спасибо. | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 13:41)
| | Нужно оставить текст до 3 точки, а все остальное вырезать. :) | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 13:59)
| | Ну так вы же писали обрезать до третьей точки.
Хм. Возможно извращенный способ, но опять же первое что в голову пришло. :)
$text=explode(".", $text);
print $text[0].". ".$text[1].". ".$text[2].". ";
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 14:14)
| | =) Обрезать до, а не от
А проще никак нельзя? | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 14:24)
| | А тут прям наворотов выше крыши? :) | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 13:15)
| |
<?
$text=substr($text,0,strpos($text,'.',2));
?>
|
только помните, что бывают многоточия... | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.11.2008 в 15:17)
| | - | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 15:29)
| | -- ? | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.11.2008 в 15:17)
| | И что вы этим получите? | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:39)
| | Строку, которая содержит весь текст, от нулевого символа до третьей точки. Что и требовалось. | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.11.2008 в 15:43)
| | А я думаю вы получите только до первой точки. | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:44)
| | А как подсчитать общее кол-во символов в тексте?
Так будет правильно?
$numtext = strlen($text);
|
| |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 15:45)
| | print substr_count($text,'.'); | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 15:45)
| | >общее кол-во символов в тексте
Если общее количество всех символов в строке, то правильно. | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:44)
| | зря так думаете | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.11.2008 в 15:46)
| |
<?php
$text="Строку, которая содержит весь текст, от нулевого символа до третьей точки. Что и требовалось.";
$text=substr($text,0,strpos($text,'.',2));
print $text;
?>
|
И каков будет результат? | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:55)
| | Вся строка и сохранится - в ней только две точки. | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.11.2008 в 15:57)
| | А я вижу только, до первой точки.
Строку, которая содержит весь текст, от нулевого символа до третьей точки | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:58)
| | А, я ошибся. В третьем параметре у strpos - это символ, а не вхождение. Тогда explode будет удобнее всего. Только, лучше в цикле (на случай, если нужен текст по энную точку, а не по третью. | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.11.2008 в 16:09)
| | explode вообще не удобно.... а если там "Война и Мир" ? | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:58)
| | Теперь объясню, почему до первой точки.
Сначала работает функция strpos, которая в данном случае ищет позицию первого вхождения точки начиная со второго символа, находит ее. В данном случае позиция точки дальше чем вы задали откуда искать, следственно позиция отсчитывается о начала строки. Далее в функцию substr() третьим параметром попадает как раз позиция до первой точки и следственно остаётся текст до первой точки. | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 16:12)
| | Все это отражено во фразе "В третьем параметре у strpos - это символ, а не вхождение". | |
|
|
|
|
|
|
|
для: AcidTrash
(20.11.2008 в 15:44)
| | - | |
|
|
|
|
|
|
|
для: kis-kis
(20.11.2008 в 13:15)
| |
<?
$dn=3; //номер точки
$pos=0;
for($i=0;$i<$dn;$i++){
$pos=strpos ($text,'.',$pos+1);
}
if($pos===false){$pos=strlen($text);}
echo substr($text,0, $pos+1);?>
|
чёт типа того... | |
|
|
|