|
|
|
| Подскажите функцию типа substr, только чтобы обрезала не по буквам, а по пробелам, например:
substr("слово1, слово2", 1, 3); // должно возвращать слово1,. Т.е. резать по любому из раделителей
можно как то вот так
$len = (strpos("слово1, слово2", " ") && strpos("слово1, слово2", " ") < 3)?(strpos("слово1, слово2", " ") :3; substr("слово1, слово2", 0, $len);
|
только вместо пробела должен стоять любой разделитель | |
|
|
|
|
|
|
|
для: Импекс
(29.06.2010 в 16:50)
| | Если вам надо вернуть слово1, то зачем вам разделитель? | |
|
|
|
|
|
|
|
для: sim5
(29.06.2010 в 17:01)
| | текст может быть и таким "должно возвращать слово1,. Т.е. резать по любому из раделителей"
постоянная одна константа это длина, и нужно обрезать строку по длине, но не жестко, а по разделителю
как то вот так, только еще не доделал ), доделаю позже, . Затем показываю, чтобы было понятней, что хочу сделать
if ($max_len_line > 126) // происходит обрезание названия
{
// Просматриваем строку справа налево
for ($i = $max_len_line; $i>0; $i--)
{
// Часть строки имени
$line_patch = substr($name, 0, $i);
echo $line_patch.'<br>';
$patern = '#\W#i';
// Это буква
if (preg_match($patern, $line_patch))
{
// Слудующая буква это раделитель
if (1)
{
//break;
}
}
//else режем по длине
}
}
|
| |
|
|
|
|
|
|
|
для: Импекс
(29.06.2010 в 17:20)
| | Если из текста "должно возвращать слово1,. Т.е. резать по любому из раделителей" должно возвращаться "слово1", то и резать ничего не надо, просто echo "слово1".
Если нужно, например, от начала строки "должно возвращать слово1,. Т.е. резать по любому из раделителей" вернуть все, включая "слово1", то нет пробем найти начальную позицию, и зная длину слова1 получить нужное.
Если нужно резать от начала строки на N символов, не обрезая последнее слово, то зная смещение N, найти первый после него пробел, и проверить символ этой позиции минус 1. | |
|
|
|
|
|
|
|
для: sim5
(29.06.2010 в 17:32)
| | Если нужно резать от начала строки на N символов, не обрезая последнее слово, то зная смещение N, найти первый после него пробел, и проверить символ этой позиции минус 1. Да Да
только фокус в том, что это может быть не только пробел,а любой разделитель. Так вот, есть ли стандартная функция, а то регуляркой как то не хочется))) | |
|
|
|
|
|
|
|
для: Импекс
(30.06.2010 в 08:40)
| | Вы можете пример привести о разделителях? Что значит любой:
слово слово
слово@слово
...
и т.п., так что-ли? | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 09:33)
| | да, все верно, еще пример !"№;%%;:?%*?:** ?(),/,._ | |
|
|
|
|
|
|
|
для: Импекс
(30.06.2010 в 09:37)
| | Тогда это просто ужас. Что это за билиберда, это осмысленный текст или мусор? Коли мусор, то рег. выражения. | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 10:03)
| | коли мусор - тогда в корзину. | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 10:15)
| | :)
Я вот и думаю, чего и главное из чего хотят выудить. | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 10:27)
| | да нет, это ("№;%%;:?%*?:** ?(),/,._) не текст, это пример разделителей))))) | |
|
|
|
|
|
|
|
для: Импекс
(30.06.2010 в 10:33)
| | Коли текст формируется разумно, то и разделитель не абы какой попало в разных местах, а один и тот же. И если так, то делать так как я говорил выше, только искать не пробел, а этот самый разделитель. | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 10:37)
| | есть обычный текст, самый что ни на есть. Ну из художественной книги например, а там встречаются, кроме пробело запятые, точки, восклицательные знаки. Есть ли функция, которая бы ловила любой разделитель. Можно сделать конечно регуляркой, но это нагружает больше, чем стандартными функциями | |
|
|
|
|
|
|
|
для: Импекс
(30.06.2010 в 10:49)
| | А согласны, что текст из книги никак не будет содержать ту ерунду, которую вы написали, другими словами это будет текст с пробелами. Из этого следует:
1. Нужно от начала строки (или смещения) извлечь N символов.
2. Узнаем что за символ на позиции N, если это не пробел, то это слово.
3. Ищем первый пробел, начиная со смещения N, и забираем эту часть строки.
4. Удаляем из этой строки все символы, которые не удовлетворяют условию, например, точка, восклицательный и вопросительный знаки, это признак конца предложения, их оставить, остальное удалить.
4. Получаем строку от начальной позиции до N, добавляя к ней строку от N до пробела с удаленными нежелательными знаками. | |
|
|
|
|
|
|
|
для: Импекс
(30.06.2010 в 10:33)
| | чьим бы примером это ни было - это хреновый пример.
Пример ситуацию прояснять должен, а не запутывать. | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 10:40)
| | согласен. | |
|
|
|